У меня есть quandry, который я пытаюсь решить с LINQ, но пока у меня нет рабочего решения.Запрос LINQ, возвращающий весь объект, сгруппированный по нескольким столбцам, когда один отличается
У меня есть список предприятий, которые возвращаются, которые содержат большое количество данных. Мне нужно сохранить все эти данные, чтобы у меня был доступ к ней, группируя его и устраняя некоторые дубликаты.
Таким образом, основными объектами, которые меня интересуют, являются Address1, Address2 и BusinessName.
Я хочу сгруппировать сначала по названию компании, затем по адресу 1, а затем по адресу 2, но ТОЛЬКО, когда адрес 2 отличается. Причина этого заключается в том, что у меня может быть несколько способов написания одного и того же адреса, и обычно это относится к адресу2, написанному по-другому, что хорошо, мы будем поддерживать это прямо сейчас, и если он будет написан как Suite 200 или Ste 200, он будет обработан иначе. Это необходимо для того, чтобы убедиться, что мы не устраняем фактических различий в случае расположения нескольких офисов в одном здании (т.е. Ste 200 и Ste 100 - это тот же бизнес с разными офисами). Однако я не хочу возвращать те же адреса с тем же списком адресов2.
var myNonDupOfficeList = officeList
.GroupBy(o => new { o.Address1, o.Address2, o.BusinessName})
.OrderBy(g => g.Key.BusinessName).ThenBy(g => g.Key.Address1).ThenBy(g => g.Key.Address2)
.Select(o => o.FirstOrDefault()).ToList();
Код, который я уже написал, будет делать это хорошо, но проблема в том, что я теряю все другие данные, которые мне нужны. Если я включаю эти данные в новый объект {}, то он добавляет различия, которые увеличивают количество групп, которые я не хочу искать. Например, я добавляю данные City, State и Zipcode, но для моих целей это не имеет значения ... данные не всегда корректны с помощью zipcodes, поэтому кто-то, входящий в неправильный почтовый индекс, будет производить другую группу, например, или кто-то, кто отправит St Louis или Сент-Луис или Сент-Луис - все это разные группы.
Город, штат и адрес не имеют отношения к тому, как я хочу группироваться, но мне нужен доступ к этим данным, когда он был сгруппирован по BusinessName, Address1 и Address2. Как я могу достичь этого с помощью Linq?
Не уверен, что вы спрашиваете. Ваша переменная 'g' перечислима, включая все исходные объекты, имеющие один и тот же групповой ключ. В настоящее время вы теряете их при выборе 'FirstOrDefault' каждой группы. –