LinQ查询Simple Where子句和许多过滤条件

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输入值......

Mig*_*oom 6

你可以这样做

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)

并根据您需要的条件构建查询.