У меня возникли проблемы с тем, как сгруппировать список этих классов.
public class Order
{
public int OrderId { get; set; }
public long OrderClassId { get; set; }
public int OrderTypeId { get; set; }
public int OrderSubTypeId { get; set; }
public string OrderString { get; set; }
//.. other Order stuff not relevant to question
}
Основную группировку я понимаю.Выглядит это так (предположим, orders
- это List<Order>
):
var orderGroups = orders.GroupBy(x=>x.OrderClassId);
// Code to assign a unique OrderString to each group goes here
Однако заказы, имеющие одинаковый OrderClassId и OrderTypeId, равный 123 и имеющие одинаковый OrderSubTypeId, должны иметь разные значения OrderString..
Это немного сбивает с толку, так что вот пример:
var order1 = new Order
{
OrderId = 1,
OrderClassId = 8754,
OrderTypeId = 123,
OrderSubTypeId = 7156
};
var order2 = new Order
{
OrderId = 2,
OrderClassId = 8754,
OrderTypeId = 123,
OrderSubTypeId = 7156
};
var order3 = new Order
{
OrderId = 3,
OrderClassId = 8754,
OrderTypeId = 951,
OrderSubTypeId = 35144
};
При моей группировке все они получат одинаковые OrderString
.Но мне нужно order2
, чтобы получить другой OrderString
.
Возможно ли это с помощью linq?Или мне просто нужно перебрать все строки и вручную отделить те, которые соответствуют моим критериям.