我有一个名为results的模型列表。我需要从结果列表中获取包含此特定字符串的那些值。
List<Search> results = new List<Search>();
results = db.Users.Select(f => new Search{ Name = f.Name, Type = f.OrganizationType.Name, County = f.County.Name }).ToList();
results = results.Where(w => (model.Name == null || w.Name.Contains(model.Name))).ToList();
当第一个结果查询返回5000行时,第二个结果返回0.我在第二个查询中尝试做的是,如果Name为null或者Name包含字符串的一部分,请将其添加到结果列表中。 我错过了什么吗?
我确实检查了几个链接,这些链接基本上要求我像Check if a string within a list contains a specific string with Linq
那样做我检查了model.Name的值,它显示正确。如果在Model.Name = null时没有搜索字符串,则查询有效,我得到所有记录
答案 0 :(得分:1)
请考虑以下声明:Name is null or if the Name contains part of a string
我希望您需要检查db.Users
中的项目是否为null并包含。我必须在此添加的另一件事是 - 如果x.Name
为空,则以下.Contains
将引发NullReferanceException
所以你必须考虑这一点。现在来看看以下查询:
List<Search> results = db.Users.Where(x=> x.Name==null || (x.Name !=null && x.Name.Contains(model.Name)))
.Select(f => new Search{ Name = f.Name, Type = f.OrganizationType.Name, County = f.County.Name }).ToList();