LINQ查询多个条件

时间:2017-12-06 17:18:00

标签: c# mysql linq

我的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查询它?

2 个答案:

答案 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();