我不太熟悉LINQ,我认为这个问题可以用它来解决。
我有一个对象列表:
IList<Aclass> allADs;
类别:
public static class Aclass
{
private string myName { get; set; }
//And more attributes.
}
我有一个字符串列表:
List<string> lstGroups = new List<string>();
在我的代码中,我的对象列表和字符串列表都已满。我想要的是一个Aclass
列表,它将属性myName
与列表的字符串相匹配。字符串列表具有唯一的元素,没有重复。
答案 0 :(得分:7)
使用Contains
:
var res = lstAclass.Where(a => lstGroups.Contains(a.MyName)).ToList();
当lstAclass
包含大量元素时,您可以在运行此查询之前构建HashSet
组名称来加快搜索速度:
var setGroups = hew HashSet<string>(lstGroups);
var res = lstAclass.Where(a => setGroups.Contains(a.MyName)).ToList();
答案 1 :(得分:3)
Note that the Enumerable.Contains method performs a case-sensitive equality comparison.
If you want to ignore case-sensitivity, then add StringComparer.OrdinalIgnoreCase
:
var matches = allADs.Where(a => lstGroups.Contains(a.myName, StringComparer.OrdinalIgnoreCase)).ToList();