簡體   English   中英

我可以將foreach循環內的Dictionary循環轉換為LINQ語句嗎

[英]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或與wherecontains等效的內聯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.

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