簡體   English   中英

時間:2019-05-10 標簽:c#group list items里面有部分相同的文本

[英]c# group list items that have part of the same text inside

我有這個列表 listemailsMsgs 有這樣的項目:

email1@hotmail.com;mensagem1;assunto1
email2@hotmail.com;mensagem1;assunto1
email3@hotmail.com;mensagem2;assunto2

前兩項具有不同的電子郵件,但消息相同。 第三項具有不同的電子郵件和不同的消息。

我很難找到將前兩個項目組合成一個的方法,如下所示:

email1@hotmail.com;email2@hotmail.com;mensagem1;assunto1

有誰知道如何做到這一點?

首先,嘗試將給定的值轉換為 ac# 模型,這樣您就可以輕松解決此類問題。

在提到的問題中,item 值包含三個部分,因此創建一個 Item 類來表示它。

    public class Item
    {
        public string EmailAddress { get; }
        public string FirstMessageField { get; }
        public string SecondMessageField { get; }

        public Item(string message)
        {
            var result = message.Split(';');
            EmailAddress = result[0];
            FirstMessageField = result[1];
            SecondMessageField = result[2];
        }
    }

然后,將所有給定的字符串值轉換為項目列表。

        var input = new List<Item>
        {
            new Item("email1@hotmail.com;mensagem1;assunto1"),
            new Item("email2@hotmail.com;mensagem1;assunto1"),
            new Item("email3@hotmail.com;mensagem2;assunto2")
        };

最后,使用 LINQ 操作根據消息字段對值進行分組:

        var output = input
            .GroupBy(x => new { x.FirstMessageField, x.SecondMessageField })
            .Select(x =>
            {
                var emailAddresses = string.Join(';', x.Select(y => y.EmailAddress).ToArray());
                return $"{emailAddresses};{x.Key.FirstMessageField};{x.Key.SecondMessageField}";
            })
            .ToList();

暫無
暫無

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

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