查找列表是否包含特定字符串

时间:2017-02-13 14:37:17

标签: c# linq

我有一个名为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时没有搜索字符串,则查询有效,我得到所有记录

1 个答案:

答案 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();