如何从2个表中一个LINQ查询返回的值

问题描述:

请考虑此表:如何从2个表中一个LINQ查询返回的值

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

选择两次,是不是很好? –

+0

这个select查询的标准是什么,你传入一个PK_Id来查找第一行,然后第二行如何链接? Year2 = Year1 - 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 }) 

如果我明白你的问题吧,然后你需要过滤一个表中的数据和连接两个表。

你可以加入的表和筛选数据

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;