如何通过字符串列表过滤类的列表?

时间:2014-01-06 17:24:54

标签: c# linq filter

所以我有这个课程:

class Blah
{
    public string Number { get; set; }
    public string Title { get; set; }

    public Blah(string nums, string ttls)
    {
        Number = nums;
        Title = ttls;
    }
}

我想用数字列表(字符串)过滤它。

所以我想做这样的事情:

List<Blah> blahs = new List<Blah> {Blah("0233", "Ho"), Blah("1209", "Ah"), Blah("2929", "Eh")};

List<string> bleh = new List<string> {"10233", "21209"};

List<Blah> missBlahs = (blahs.Where(b => !bleh.Contains(b.Number))).ToList<Blah>();

//Result: Blah("2929", "Eh")

然而,我一直在拿回整个清单。我不想要的。

2 个答案:

答案 0 :(得分:2)

您是否要过滤掉任何Number属性,该属性是List<String>中任何值的子字符串?鉴于没有任何值直接匹配,这似乎是这种情况。如果是,请尝试以下

blahs
  .Where(b => bleh.Any(x => x.Contains(b.Number))
  .ToList();

答案 1 :(得分:0)

假设bleh列表中的第一个数字是拼写错误,这就是您想要的

List<Blah> blahs = new List<Blah> { new Blah("0233", "Ho"), new Blah("1209", "Ah"), new Blah("2929", "Eh") };

List<string> bleh = new List<string> { "0233", "1209" };

List<Blah> missedBlahs = blahs.FindAll(b => !bleh.Contains(b.Number));

//Result: Blah("2929", "Eh")