gpt4 book ai didi

c# - select new 中的 Linq where 子句

转载 作者:行者123 更新时间:2023-11-30 22:55:54 25 4
gpt4 key购买 nike

我有 2 个表,我们称它们为 t1 和 t2。t1 有一个 ID、一个字符串和一个 bool 值。 t2 有一个 ID、一个日期和一个 t1.ID。我想把它们放在我类(class)的列表中。

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 收到此警告:

The LINQ expression 'GroupBy([t2].T1ID)' could not be translated and will be evaluated locally.

出现了好几次。此消息也来自 SingleOrDefault。我进行了一些测试,如果我将 where 放在 select new 中,它就会出现。

那么我该如何改变我的表情来避免这种情况呢?还是我的表达很糟糕,我本可以做得更好? (我不能改变表结构)

最佳答案

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

问候。

关于c# - select new 中的 Linq where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54907453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com