我有一个名为LanguageItem的自定义对象列表。该LanguageItem包含一个名为“Tag”的项目列表。每个标签都有一个ID。
现在我已经阅读了LINQ,但所有的例子(我在这个网站和其他人在阅读我的问题之前阅读过)似乎都集中在你正在搜索的列表对象中的一个属性。
所以我想说我有一个标签,所以我有我的标签ID。我想要的是一个LanguageItems列表,其中包含一个带有该ID的标签。
我有过几次尝试,但我似乎没有到任何地方,所以我转向你们。
答案 0 :(得分:5)
查看此代码是否对您有所帮助。
public IEnumerable<LanguageItem> GetItemsByTagID(string targetID)
{
var result = LanguageItems.Where(lItem => lItem.Tags.Any(tagItem => tagItem.ID == targetID));
return result;
}
答案 1 :(得分:1)
这应该这样做
var FoundLanguageItems = LanguageList.Where(ThisLang => ThisLang.Tags.SingleOrDefault(ThisTag => ThisTag.id == SearchId) != null);
这基本上嵌套了两个LINQ查询。内部查询就是这个。
ThisLang.Tags.SingleOrDefault(ThisTag => ThisTag.id == SearchId)
这意味着,给定一个名为ThisLang的Language对象,给我一个具有搜索标记id的Tag对象,或者如果ThisLang.Tags中没有具有该搜索ID的标记对象,则给我null。
< p> 如果此内部查询返回null,则表示该语言没有带该ID的标记。外部查询是
LanguageList.Where(ThisLanguage => INNER_QUERY != null)
这意味着,从LanguageList,给我INNER_QUERY没有返回null的语言,这意味着,内部查询找到至少一个匹配的标记,因此它返回了一个NOT_NULL值。