linq查询并使用结果来设置属性

dst*_*101 3 c# linq

我有一个对象列表,我需要根据一个字段是否具有唯一值来设置一个字段。

考虑具有两个属性的票证类

public class Ticket
{
    public string TicketNumber { get; set; }

    public bool IsUnique { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我收到票证清单,并将其传递给函数:

 IList<Ticket>
Run Code Online (Sandbox Code Playgroud)

我想使用linq遍历此列表,如果给定的票证号码在该列表中是唯一的,请将bool IsUnique设置为true。

到目前为止,我有以下内容

public void UpdateTickets(IList<Ticket> Tickets)
    {
        foreach (var ticket in tickets)
        {
            // if ticketNumber occurs once
            // set isUnique to true, otherwise false
        }
    }
Run Code Online (Sandbox Code Playgroud)

Mag*_*nus 5

应该这样做:

foreach (var g in tickets.GroupBy(x => x.TicketNumber))
{
    var unique = !g.Skip(1).Any();
    foreach (var ticket in g)
    {
        ticket.IsUnique = unique;
    }
}
Run Code Online (Sandbox Code Playgroud)

我们将具有相同编号的票归为一组,然后检查该组中是否有1件以上的票。