2016-11-10 88 views
0

我正在为我的客户搜索功能构建搜索查询: 我将所有这些字段传递到函数中,并想知道构建LINQ表达式的最佳方式是什么。有些字段可能为空字符串和搜索应该使用的“包含”,而不是搜索确切的字段字符串LINQ - 构建搜索查询

public List<Customer> SearchCustomer(
    string membershipID, 
    string preferName, 
    string firstName, 
    string lastName, 
    string nric, 
    string phoneNumber, 
    string email, 
    DateTime dob, 
    string gender, 
    string address, 
    Boolean vip, 
    bool isDeleted) 
+0

什么是你想要执行的查询?需要一个简单的例子 – barakcaf

回答

2

您可以通过以下方式管理多个滤波器参数:

var result = customerCollection. 
    .Where(c => membershipID != null ? c.membershipId.Contains(membershipID) : true) 
    .Where(c => preferName != null ? c.preferName.Contains(membershipID) : true) 

    ... 

    .ToList(); 

我希望你有想法

+0

我有这个,它只工作正常,直到我输入membershipID并更喜欢名字和名字。如果我尝试使用其他字段搜索更多,它会返回我0记录。 列表 customers = context.Customers.Where(x => membershipID!= 0?x.MembershipID.ToString()。Contains(membershipID.ToString()):true) .Where(x => preferName!= null ?x.PreferName.Contains(preferName):true) .Where(x => firstName!= null?x.FirstName.Contains(firstName):true) .Where(x => lastName!= null?x.LastName .Contains(lastName):true) – user7117907

+0

发布您正在使用的整个查询 – user449689