簡體   English   中英

為什么我的Lambda查詢返回匿名類型而不是Linq的強類型返回值?

[英]Why does my Lambda query return an anonymous type versus Linq's strongly-typed return value?

好吧,忍受我...直到幾天前才做過任何Linq或Lambda :)

我正在使用C#和ADO.NET實體框架。 我想查詢我的模型並基於關系返回對象列表。

這是我的代碼:

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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM