簡體   English   中英

Append 屬性值使用 c# model 值使用 Z979E08FD891EBB5526A70C82D741A40Z

[英]Append property value to c# model value using LINQ

我想返回帶有 ID 和名稱的記錄列表,如果名稱不唯一,則名稱將附加域作為名稱(域),如果域也是非唯一的,它將再次 append 代碼,例如作為名稱(域)(代碼)。

明確名稱 - 用於唯一名稱,名稱(域) - 用於重復名稱 名稱(域)(代碼) - 用於重復代碼。

以下是樣本數據和預期數據

**Sample Data**
var filter = new List<Record>()
{
     new Record { Id = 011, Name = "OAKLAWN", Code = 123, Domain = "p1000"},
     new Record { Id = 012, Name = "OAKLAWN", Code = 124 , Domain = "p2000"},
     new Record { Id = 013, Name = "OAKLAWN", Code = 125 , Domain = "p3000"},
     new Record { Id = 014, Name = "OAKLAWN", Code = 126 , Domain = "p4000"},
     new Record { Id = 015, Name = "OAKLAWN", Code = 127 , Domain = "p5000"},
     new Record { Id = 016, Name = "PEAKLAWN", Code = 111 , Domain = "p6000"},
     new Record { Id = 017, Name = "PERKLAWN", Code = 124 , Domain = "p6000"},
     new Record { Id = 018, Name = "QUCKLAWN", Code = 122 , Domain = "p6000"}
};

**expected return data**
{ Id = 011, Name = "OAKLAWN(p1000)"},   
{ Id = 012, Name = "OAKLAWN(p2000)(124)"},  
{ Id = 013, Name = "OAKLAWN(p3000)"},   
{ Id = 014, Name = "OAKLAWN(p2000)(126)"},  
{ Id = 015, Name = "OAKLAWN(p5000)"},
{ Id = 016, Name = "PEAKLAWN"},
{ Id = 017, Name = "PERKLAWN"},
{ Id = 018, Name = "QUCKLAWN"}

如何使用 c# LINQ 來實現這一點。

.NET 小提琴: https://dotnetfiddle.net/2UdaxY

謝謝。

var records = filter.GroupBy(
        r => r.Name,
        (key, group) => group.Select(r => new
        {
            r.Id,
            Name = group.Count() == 1
                ? key
                : group.Count(x => x.Domain == r.Domain) == 1
                    ? $"{key}({r.Domain})"
                    : $"{key}({r.Domain})({r.Code})"
        })
    )
    .SelectMany(r => r)
    .ToArray();

.NET 小提琴: https://dotnetfiddle.net/tIPZOR

暫無
暫無

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

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