Son*_*ila 2 .net c# linq ef-code-first entity-framework-6
我需要过滤数据实体,但没有预定义的列,我将不得不过滤.
public class EventDocument
{
public string ID1 { get; set; }
public int ID2 { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Number { get; set; }
public virtual ICollection<Event> Events { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我创建了所有需要的属性:SearchFirstName,SearchLastName,SearchNumber
现在我试图通过用户输入的这些参数来过滤EventDocument.如果用户在SearchFirstName中输入值,我的查询将如下所示:
var query = from b in DBContext.EventDocuments
where b.FirstName.Contains(SearchFirstName)
select b;
Run Code Online (Sandbox Code Playgroud)
如果用户输入SearchFirstName和SearchLastName的值,我的查询将如下所示:
var query = from b in DBContext.EventDocuments
where b.FirstName.Contains(SearchFirstName)
&& b.LastName.Contains(SearchLastName)
select b;
Run Code Online (Sandbox Code Playgroud)
如果我不知道如何构建查询 - 哪个归档用户将填写?也许他会为SearchLastName和SearchNumber输入值......
你可以这样做
var query = DBContext.EventDocuments;
if(!string.IsNullOrEmpty(SearchFirstName))
{
query = query.Where(x => x.FirstName.Contains(SearchFirstName));
}
if(!string.IsNullOrEmpty(SearchLastName))
{
query = query.Where(x => x.LastName.Contains(SearchLastName));
}
var result = query.ToList();
Run Code Online (Sandbox Code Playgroud)
并根据您需要的条件构建查询.