如何在int列表中按属性值过滤列表?

时间:2017-02-14 12:18:30

标签: c# linq list contains

我已经定义了两个列表,现在想要按照escHistory RID值匹配的Application属性过滤filterRIDS列表。

但是通过过滤掉escHistory的LINQ,我得到的返回计数为零。虽然列表确实包含Application属性值与filterRIDS中定义的值匹配的记录。

问题:

如何按其他列表中的属性值过滤列表?

这是过滤器代码的基本要点:

List<int> filterRIDS = new List<int> { 115841, 200463 };
List<Escalation> escHistory = new List<Escalation>();

//Filter list by RID's matching
escHistory = escHistory.Where(r => r.Application.Contains(filterRIDS.ToString())).ToList<Escalation>();

3 个答案:

答案 0 :(得分:3)

您交换了查询

escHistory = escHistory.Where(r => filterRIDS.Contains(int.Parse(r.Application))).ToList();

答案 1 :(得分:1)

问题是filterRIDS.ToString(),它返回List<int>类的名称:

"System.Collections.Generic.List`1[System.Int32]"

当然,您没有Application字段中包含此值的历史记录对象。如果要检查Application字符串是否包含给定列表中的任何字符串:

escHistory = escHistory
     .Where(r => filterRIDS.Any(id => r.Application.Contains(id.ToString())))
     .ToList();

答案 2 :(得分:1)

我认为this正是您所寻找的。在将int列表转换为字符串时进行小的更改。