2016-08-31 37 views
2

我不是很了解LINQ,我认为这个问题可以用它解决。LINQ - 在IList和字符串列表之间进行搜索

我有对象的列表:

IList<Aclass> allADs; 

类:

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

而且我有一个字符串列表:

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

在我的代码,这一点我的两个对象列表和字符串列表已满。我想要的是一个Aclass的列表,它与属性myName与列表中的字符串匹配。字符串列表有独特的元素,没有重复。

回答

7

使用Contains

var setGroups = hew HashSet<string>(lstGroups); 
var res = lstAclass.Where(a => setGroups.Contains(a.MyName)).ToList(); 
+0

非常感谢您,先生,现在,我有一个变化,但我不知道如果我要创建一个新的职位。我可以在评论部分问你,你能回答吗? – user3442470

+1

@ user3442470如果您的后续行为有很大差异,请将其作为单独问题发布,然后在评论中发布链接以回答问题。 – dasblinkenlight

3

。注意:

var res = lstAclass.Where(a => lstGroups.Contains(a.MyName)).ToList(); 

lstAclass有很多元素,你可以在运行之前此查询加快通过构建组名的HashSet搜索Enumerable.Contains方法执行区分大小写的相等比较。

如果你想忽略大小写,再加入StringComparer.OrdinalIgnoreCase

var matches = allADs.Where(a => lstGroups.Contains(a.myName, StringComparer.OrdinalIgnoreCase)).ToList(); 
+1

这是非常重要的,谢谢你带来这个。 +1 不知道它执行区分大小写的比较。 – user3442470

相关问题