请考虑此表:
PK_Id Number Year Month Value
-------------------------------------------------------------------------
1 1 2000 5 100000
410 4 2000 6 10000
8888 1 2001 5 100
我Id=8888
现在我想第一个选择记录Id=8888
和第二选择该记录的previos年*(我的意思是Id = 1)*。我如何使用linq和一个查询来做到这一点。
基本上我们有一些查询,首先它应该从表中找到一个值(可能不是PK)并在另一个表中找到对应的记录。我如何使用linq和一个数据库引用来做到这一点。
感谢
答案 0 :(得分:1)
from a in Record
where a.PK_Id == 8888
from b in Record
where b.Number == a.Number && b.Year == a.Year - 1
select new { Current = a, Previous = b }
或
Record
.Where(a => a.PK_Id == 888)
.SelectMany(a =>
Record
.Where(b => b.Number == a.Number && b.Year == a.Year - 1)
.Select(b => new { Current = a, Previous = b })
答案 1 :(得分:1)
如果我理解你的问题,那么你需要过滤一个表的数据并加入两个表。
您可以加入表格并过滤数据
var query = from c in Table1
join o in Table2 on c.Col1 equals o.Col2
where o.Col3 == "x"
select c;
或者您可以从一个表中过滤数据然后加入表(结果将是相同的)
var query = from c in Table1.Where(item => item.Col3 == "x")
join o in Table2 on c.Col1 equals o.Col2
select c;