gpt4 book ai didi

c# - 为什么我的 Lambda 查询返回匿名类型而不是 Linq 的强类型返回值?

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:32 26 4
gpt4 key购买 nike

好的,请耐心等待......直到几天前才做过任何 Linq 或 Lambda :)

我正在使用 C# 和 ADO.NET Entity Framework 。我想查询我的模型并根据关系取回对象列表。

这是我的代码:

var query = db.Achievements.Join
(
db.AchievementOrganisations,
ach => ach.AchievementId,
ao => ao.AchievementId,
(ach, ao) => new { Achievement = ach }
);

var query2 = from s in db.Achievements
join h in db.AchievementOrganisations
on s.AchievementId equals h.AchievementId
select s;

(对不起格式)

我的问题是为什么我认为是 Lambda 表达式的第一个查询返回匿名类型:
{System.Data.Objects.ObjectQuery<<>f__AnonymousType1<MyApp.Models.Achievement>>}

...但是第二个查询(一个 LINQ 查询)我得到了一个强类型值:
{System.Data.Objects.ObjectQuery<MyApp.Models.Achievement>}

为什么是这样?

干杯,

最佳答案

这一点是第一次调用中的问题:

(ach, ao) => new { Achievement = ach }

您正在使用 Achievement 创建一个新的匿名类型。 Achievement 类型的属性.

我怀疑你只是想要:
(ach, ao) => ach

...尽管进行联接并忽略要加入的表有点奇怪。

基本上,每当你看到 new { ... }这意味着匿名类型。 (不要与 new[] { ... } 混淆,它构建具有推断元素类型的数组,或 new List<string> { ... } 等,它将构建具有给定内容的新 List<string>

关于c# - 为什么我的 Lambda 查询返回匿名类型而不是 Linq 的强类型返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3851271/

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