Есть такой код простой.
Не пойму почему в случае 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.