[英]Can I convert Dictionary loop inside of a foreach loop into a LINQ statement
如果可能,請幫助我將這些嵌套循環轉換為LINQ語句
非常感謝您的幫助!
public static List<Term> GetTermsByName(this IEnumerable<Term> terms, Dictionary<string, string> termInfo)
{
List<Term> termList = new List<Term>();
foreach (Term term in terms)
{
foreach (var value in termInfo.Values)
{
if (term.Name == value)
{
termList.Add(term);
}
}
}
return termList;
}
也許Contains
方法就是你所追求的
確定序列是否包含指定的元素。
以下內容可以理解為: 過濾 詞典中存在Term.Name
所有術語 Values
var values = termInfo.Values;
var result = terms.Where(term => values.Contains(term.Name));
.ToList();
// or
var result = terms.Where(term => termInfo.Values.Contains(term.Name));
.ToList();
您在這里丟失了詞典的內容,不是嗎? 快速使用按鍵。 但是,您仍然可以比嵌套foreach
或與where
和contains
等效的內聯linq做得更好。 使用聯接至少可以提高效率。
var termList = (from term in terms
join value in termInfo.Values
on term.Name equals value
select term)
.Distinct() // if there are duplicates in either set
.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.