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然后再选择该记录的上一年*(我的意思是 Id=1)*。我如何使用 linq 和一个查询来做到这一点。

基本上我们有一些查询,首先它应该从一个表中找到一个值(可能不是 PK)并在另一个表中找到相应的记录。我如何使用 linq 和一个对数据库的引用来做到这一点。

谢谢

4

2 回答 2

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 })
于 2012-06-27T09:06:03.267 回答
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;
于 2012-06-27T09:15:36.160 回答