我的LINQ需要有多个条件。
我有一个包含id,Name和pID的数据库。例如,数据将是:
id=1 | Name='A1' | pID = 0
id=2 | Name='A2' | pID = 0
id=3 | Name='A3' | pID = 0
id=4 | Name='A2' | pID = 5
在这种情况下,pID = 0是默认数据。但是,当有人编辑特定名称时,会为此名称插入一条新记录,并带有新的pID。我的问题是当我尝试查询这些数据时。我需要获取特定pID和默认值的所有名称,但我不能使用相同的名称。 我想要一个返回id 1,4和3的查询。
我试过了:
int id = 5;
var test= db.MyTable.Where(a => a.pID == id).ToList();
它只返回id = 4
的行int id = 5;
var test= db.MyTable.Where(a => a.pID == id || a.pID == 0).ToList();
它会归还一切。
有谁知道如何使用LINQ查询它?
答案 0 :(得分:2)
如果我正确理解了您的问题,您希望通过考虑Name
来区分Pid
。你可以这样试试;
int id = 5;
var records = db.MyTable.Where(x => x.pID == 0 || x.pID == id).OrderByDescending(x => x.pID).GroupBy(x => x.Name)
.Select(x => x.FirstOrDefault()).ToList();
答案 1 :(得分:0)
这样的事情对你有用
var listOfIds = from x in db.MyTable
group x by x.Name
into groups
select groups.OrderByDescending(p => p.pID).First();