Linq中选择新的where子句

时间:2019-02-27 14:15:29

标签: c# linq entity-framework-core

我有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中的新位置放进去。

那么,如何更改表情以避免这种情况?还是我的表情胡扯,我可以做得更好? (我无法更改表的结构)

1 个答案:

答案 0 :(得分:2)

我相信这仍然是EF的局限性。只需注意查询所使用的内存,因为警告会提醒您这样做。

致谢。