0
我有以下模式:許多到一個內部聯接涉及最大LINQ lambda表達式()
Table1
ID int
Table2
ID int
Table1ID int
Datetime datetime
Table3
ID int
Table2ID int
Name varchar(255)
所有列not null
。如何使用lambda表達式在LINQ中編寫以下SQL查詢?
select Table1.*
from Table2
inner join (
select Table1ID, max(Datetime) as Datetime
from Table2
group by Table1ID
) a on Table2.Table1ID = a.Table1ID and Table2.Datetime = a.Datetime
inner join Table3 on Table2.ID = Table3.Table2ID
inner join Table1 on Table1.ID = Table2.Table1ID
where Name = 'me'
編輯:
我使用LINQ to EF。我曾嘗試
var myEntities = new MyEntities();
var a = myEntities.Table2.Select(x => new { x.Id, x.Datetime }).GroupBy(x => x.Id).Select(x => new { Id = x.Key, Datetime = x.Max(y => y.Datetime) });
var b = myEntities.Table2.Join(a.ToList(), x => new { Id = x.Table1Id, x.Datetime }, y => new { y.Id, y.Datetime }, (x, y) => x.Id);
return myEntities.Table3.Where(x => x.Name == "me" && b.Contains(x.Table2Id)).Select(x => x.Table2.Table1).ToList();
,但它與
System.NotSupportedException: Unable to create a constant value of type 'Anonymous type'. Only primitive types ('such as Int32, String, and Guid') are supported in this context.
突出上面的最後一行回來。堆棧跟蹤顯示它是ToList()引發此異常。
什麼LINQ提供您使用的是什麼? LINQ to SQL? LINQ到EF?還有別的嗎?另外,你有什麼嘗試?爲什麼沒有工作? – svick 2012-02-08 01:10:21