我正在做asp.net-mvc與entity-framework應用程序。mvc實體框架選擇與動態where子句
我有一個select
指令,我需要有dymanic where
條件。
這是一個常見的情況,你有一個由「aaaa bbbb cccc」字符串組成的過濾器。我需要將包含所有過濾器字符串或其一部分的所有數據。
我在做它的一部分,它與Split
功能,但它很難得到所有可能的組合。
我寧願使用Store Procedure
。但它的用途是使用實體框架。
至於我做到了這一點。
public IEnumerable<UploadSearch> GetUploadsBySearch(string search)
{
IEnumerable<UploadSearch> viewModel = (from uploads in _db.Uploads
.Where(p => p.ProcessState_id == Security.APPROVED && p.Finder.Contains(search))
.OrderByDescending(p => p.UploadDate)
select new UploadSearch
{
User_id = uploads.User_id,
UserName = uploads.Users.Name,
UserLastName = uploads.Users.LastName,
});
我的指令添加到loop
THROU字符串,
string[] param = search.Replace(" "," ").Split(' ');
string _param = "";
int large = param.Length;
for (int i=0;i<large-1;i++)
{
_param +=param[i] ' ' + param[i + 1];
IEnumerable<UploadSearch> _viewModel = (from uploads in _db.Uploads
.Where(p => p.ProcessState_id == Security.APPROVED && p.Finder.Contains(_param))
.OrderByDescending(p => p.UploadDate)
select new UploadSearch
{
User_id = uploads.User_id,
UserName = uploads.Users.Name,
UserLastName = uploads.Users.LastName,
});
viewModel = viewModel.Union(_viewModel);
}
而且我用的是Union
條款。
但必須有另一種方式來做到這一點。
任何想法?
什麼叫「動態」,其中的條件是什麼意思?我不確定我瞭解你的問題。 – jtate