如何在一个linq查询中返回2个表中的值

时间:2012-06-27 08:45:28

标签: c# linq entity-framework linq-to-sql c#-4.0

请考虑此表:

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和一个数据库引用来做到这一点。

感谢

2 个答案:

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