簡體   English   中英

LINQ過濾器LIST值

[英]LINQ filter LIST values

我有LINQ查詢

Label = c.Name.Translations.Select(label => new Label
                {                        
                    Rus = label.Text,
                    Eng = label.Text,
                }),

翻譯課

public int Id { get; set; }

public string Text { get; set; }

public virtual ICollection<Translation> Translations { get; set; }



  public class Translation
    {
        public int Id { get; set; }
        public string Language { get; set; }
        public string Text { get; set; }
    }

哪個返回列表是這樣的

{
"rus":"Нью-Йорк",
"eng":"Нью-Йорк"
},
{
"rus":"New-York",
"eng":"New-York"

我的目標是有一個這樣的項目

"rus":"Нью-Йорк",
"eng":"New-York"

我該如何過濾它?

這應該做的工作:

var labels = new Dictionary<string, string>();
foreach(var item in c.Name.Translations)
{
    labels.add(item.Language, item.Text);
}

編輯

var labels = c.Name.Translations.ToDictionary(t => t.Language, t => t.Text);

你可以這樣做:

Dictionary<string, string> langText = new Dictionary<string, string>();
c.Name.Translations.ForEach(x => langText.Add(x.Language, x.Text));

langText將包含您的數據。

var label = c.Name.Translations.ToDictionary(translation => translation.Language, translation => translation.Text);

這將創建一個可以通過以下方式訪問的字典

label["eng"] // This returns "New York"

您可以通過每個Label類屬性的LINQ查詢來實現此目的:

var resultLabel = new Label
{
    Eng = Translations.FirstOrDefault(trans => trans.Language == "English")?.Text,
    Rus = Translations.FirstOrDefault(trans => trans.Language == "Russian")?.Text,
};

暫無
暫無

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

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