如何从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和一个数据库引用来做到这一点。
感谢
答
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;
选择两次,是不是很好? –
这个select查询的标准是什么,你传入一个PK_Id来查找第一行,然后第二行如何链接? Year2 = Year1 - 1?几个月左右,号码进来了吗? –