簡體   English   中英

復雜的LINQ查詢

[英]Complex LINQ query

我知道LINQ,但我的知識幾乎只有選擇,位置,排序和所有最常見的功能。 現在,我需要做一些我認為確實很困難的事情,甚至可能無法僅使用LINQ做某事。 我有一個人名單。 進行查詢很容易,但是我需要從該列表中創建一個文本字符串。 文本字符串必須帶有字母,后跟每個人的名字。

IList<person> Person

我需要能夠通過個人列表進行檢查的LINQ語句。 我需要能夠查找出現多次的名稱。 到目前為止,我有以下幾點。 它可以正常工作,但不能提供所需的一切:

Person[0] name="Fred" &
Person[1] name="Pete" &
Person[2] name="Tony" the var abc = "a) Fred. b) Pete. c) Tony 

var a = "";
foreach (var person in _persons
            .Select((data, value) => new { Data = data, Value = value })
        {
            a = a + (char)(details.Value + 64) + details.name
        }

我需要的是其他功能,以便:

Person[0] name="John" then var abc = "a) John."

Person[1] name="John" &
Person[3] name="John" then var abc = "b) & d) John."

Person[1] name="John" &
Person[2] name="John" &
Person[3] name="John" then var abc = "b),c) & d) John."

換句話說,獲取名稱並在其前面放置一個字符,以顯示名稱在列表中的位置。 但是,如果名稱出現兩次,則代替a)name1。 b)name1我需要獲得a),b)名稱。

我真的不知道該怎么做。 任何人都可以給我的任何建議或指示,我將不勝感激。

我想我理解,但如果我這樣做,我應該獲得一枚獎牌。

foreach (var group in _persons
        .Select((data, value) => new { Data = data, Value = value }
        .GroupBy (x => x.Data))
    {
        foreach (var item in group)
            a = a + (char)(item.Value + 64) + ") ";

        a = a + group.Key;
    }

鑒於:

var persons=new[] {"Fred", "John", "John", "Pete", "John"};

你可以寫:

        char id = 'a';
        foreach (var row in persons
            .Select(w => new { id = id++, name = w })
            .GroupBy(w => w.name)
            .Select(w => w
                .Select(ww => ww.id + ")")
                .Aggregate((c, n) => c + "&" + n)
                + " " + w.Key))
        {
            Console.WriteLine(row);
        }

那給你:

a) Fred
b)&c)&e) John
d) Pete

您需要首先按名稱分組,然后將其轉換為字符串。

var result = names
    .Select((name, index) => new { Name = name, Prefix = (char)(index + 'a') + ")" })
    .GroupBy(p => p.Name, p => p.Prefix)
    .Select(g => string.Join(" & ", g) + " " + g.Key);

這個示例並沒有完全完成a), b) & c)的格式化(相反,它給出a) & b) & c)的格式,但是應該可以幫助您入門。

您可以使用Count()實現此目的。 它可以使用一個函數來確定是否應計數。

暫無
暫無

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

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