[英]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.