LINQ - 在IList和字符串列表之间进行搜索

时间:2016-08-31 16:03:36

标签: c# linq

我不太熟悉LINQ,我认为这个问题可以用它来解决。

我有一个对象列表:

IList<Aclass> allADs;

类别:

public static class Aclass
{
    private string myName { get; set; }
    //And more attributes.
}

我有一个字符串列表:

List<string> lstGroups = new List<string>();

在我的代码中,我的对象列表和字符串列表都已满。我想要的是一个Aclass列表,它将属性myName与列表的字符串相匹配。字符串列表具有唯一的元素,没有重复。

2 个答案:

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