【发布时间】:2014-05-21 21:30:59
【问题描述】:
需要有关 C# 中 LINQ lambda 表达式的帮助。
那么让我解释一下我的对象的结构。
RootObject 是一个集合(具有多个属性的自定义类),它具有许多属性,其中一个是List<Item> 项目。
项目包含一个List<Round> 回合。
Round 包含一个EntryRID(此ID 是唯一的)和name。
string = IDToFind = "111"; //The ID i want a Round object for
因此,我需要从我的“项目”列表中找到与给定 ID (IDToFind) 匹配的回合 ID。 AKA 我需要在“items”中搜索每个单项以查找 ID 与 IDToFind 匹配的 Round 对象。
我已经厌倦了这个表达:
Round playerRound = RootObject.Select(i => i.Items.Select(x => x.Rounds.Where(y => y.EntryRID == Int32.Parse(IDToFind))));
但它不返回任何类型的对象,它返回:
System.Linq.Enumerable+WhereSelectListIterator`2[Leaderboards,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.IEnumerable`1[Round]]]
【问题讨论】:
-
嗯,是的,您已经创建了一个查询 - 您需要遍历结果...或使用
First()、Single()或其他任何方法来获得单个结果。您可能还想使用SelectMany来展平结果...这无济于事,您要查找的结果类型并不明显。 -
好吧,我确实用文字解释了它:),但现在我添加了我正在寻找的对象(请参阅更新后的帖子,表达式)
-
那么如果有多个匹配项你想做什么?
-
不可能因为回合的 ID 是 100% 唯一的。