我有2个表,我们称它们为t1和t2。 t1有一个ID,一个字符串和一个布尔值。 t2有一个ID,一个日期和一个t1.ID。 我想将它们放在班级列表中。
public class MyClass {
public string Name {get; set;}
public DateTime Date1 {get; set;}
public Datetime Date2 {get; set;}
}
(它有15个日期,为减小它的大小,我只放了两个)
我能够找到解决方案:
List<MyClass> list = (from t2 in con.t2
join t1 in con.t1 on t2.T1ID equals t1.ID
select t2).GroupBy(d => d.T1ID).Select(x => new MyClass()
{
Name = x.FirstOrDefault().t1.Name,
Date1 = x.where(d => d.ID == 1).SingleOrDefault().Date,
Date2 = x.where(d => d.ID == 2).SingleOrDefault().Date
}).ToList();
它正在按预期方式工作,但是问题是,我从Visual Studio中收到此警告:
LINQ表达式'GroupBy([t2] .T1ID)'无法翻译,并且 将在本地进行评估。
它出现了几次。此消息也适用于SingleOrDefault。我经过了一些测试,然后才将select中的新位置放进去。
那么,如何更改表情以避免这种情况?还是我的表情胡扯,我可以做得更好? (我无法更改表的结构)
答案 0 :(得分:2)
我相信这仍然是EF的局限性。只需注意查询所使用的内存,因为警告会提醒您这样做。
致谢。