Concat, Distinct по строке
От: e.thrash  
Дата: 18.10.23 12:06
Оценка:
Есть такой код простой.
Не пойму почему в случае Concat, Distinct по одинаковыми строкам возвращает 2 вместо 1.

  Код рабочий
internal class Program
{
    private static void Main(string[] args)
    {
        var dt1 = new dt()
        {
            id = 1,
            ds = "20220101",
            de = "20220202"
        };


        var dt2 = new dt()
        {
            id = 1,
            ds = "20220101",
            de = "20220202"
        };

        var l = new List<dt>();
        l.Add(dt1);
        l.Add(dt2);

        //cnt = 2  ?
        var s = l.GroupBy(dt => dt.id).Select(b => new { Key = b.Key, cnt = b.Select(d => d.ds.Concat(d.de)).Distinct().Count() });


     //cnt = 1
        var s2 = l.GroupBy(dt => dt.id).Select(b => new { Key = b.Key, cnt = b.Select(d => d.ds + d.de).Distinct().Count() }); 
    }
}

class dt
{
    public int id;
    public string ds;
    public string de;
}




тем более в мсдн написано такое

Для объединения строк можно также использовать оператор объединения строк языка, например + в C# и F#, или & и + в Visual Basic. Оба компилятора преобразуют оператор объединения в вызов одной из перегрузок String.Concat.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.