lambda查询过滤掉重复和空值

时间:2017-05-25 10:41:11

标签: c# visual-studio lambda

说我有MyFable与MyField1和MyField2,MyField3填充如下

MyField1      MyField2    MyField3
A1            null        x
A1            123234      x
B1            47686876    x
C1            null        x
C1            8856578     x
D1            null        x
E1            23423       y

如何编写lambda查询以仅将记录带回MyField3 =' x'并且有: 只出现一次MyField1,OR 如果有2次出现,只需要填充MyField2的那个? MyField2最多只会发生2次。

到目前为止我已经

MyList = db.MyTable.Where(p => p.MyField3 == "x")

我知道它的表设计不好(显然有不同的字段名称),但我只是继承了它。 感谢

2 个答案:

答案 0 :(得分:2)

使用下面的代码

MyList = db.MyTable.Where(p => p.MyField3 == "x" && p.MyField2!=null).Distinct();

答案 1 :(得分:0)

本条款将为您提供MyField2 is nullMyField1 is unique

的记录
var MySecondList = db.MyTable.Where(p => p.MyField2 == null)
    .GroupBy(g => new 
    {
        myField1 = g.MyField1 
    })
    .Select(s => new 
    { 
        count = s.Count(), 
        myField1 = s.Key.myField1 
    }).Where(k => k.count == 1).ToList();