我有以下课程
public class Group
{
public string Id { get; set; }
public string Name { get; set; }
}
和2列出了List<string> groupRestrict
和List<Group> groups
现在组列表包含一些填写了所有字段的组,我想选择所有受限制的组,groupRestrict列表只包含组的名称。
我尝试了一些东西,但由于某些原因,它总是返回一个空列表。这是我的最后一次测试:
var lst = groups.Where(j => groupRestrict.Contains(j.Name)).ToList();
有什么可能出错的线索?
编辑:就像评论说的那样,这应该有效,输入有一些'
但现在我想让groupRestrict没有确切的名称,但可以使用&#39; like&#39;特征
当前表达:
var restrictedGroups = (from gr in groupRestrict join g in groups on gr equals g.Name select g).ToList();
答案 0 :(得分:2)
尝试:
var lst = groups.Where(j => groupRestrict.Any(x=> j.Name.Contains(x))).ToList();
这将匹配名称中包含来自searchList的一个或多个字符串的所有组。
不区分大小写的变体将是:
var lst = groups.Where(j => groupRestrict.Any(x=> j.Name.ToLower().Contains(x.ToLower()))).ToList();
尽管在这种情况下最好将groupRestrict转换为查询之前的小写,并且可以省略对.x的.ToLower()调用:
string[] lowerCaseGroupRestrict = groupRestrict.Select(x=> x.ToLower()).ToArray();
var lst = groups.Where(j => lowerCaseGroupRestrict.Any(x=> j.Name.ToLower().Contains(x))).ToList();