说我有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")
我知道它的表设计不好(显然有不同的字段名称),但我只是继承了它。 感谢
答案 0 :(得分:2)
使用下面的代码
MyList = db.MyTable.Where(p => p.MyField3 == "x" && p.MyField2!=null).Distinct();
答案 1 :(得分:0)
本条款将为您提供MyField2 is null
和MyField1 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();