У меня есть список родовых C# List<Result>
результатов которых имеют несколько полей с несколькими рядами данных в нем, как следует из типа RESULT
Объединение нескольких строк столбца в списке C# на основе других столбцов
public class Result
{
public int TrdID;
public string Term;
public double Price;
public string Seller;
public string Buyer;
public bigint Quantity;
}
и тому данные следующим образом
TrdID Term Price Seller Buyer Quantity
1000 201508 1 ABC XYZ 10
1010 201508 2 ACB PQR 10
1002 201507 1.5 ABX PEW 20
1002 201506 1.5 ABX PEW 20
1002 201508 1.5 ABX PEW 20
Теперь я хочу, чтобы обрабатывать вышеуказанные данные и возвращает один для одного уникального ID
, предусмотренного конкретных ID
всех столбцов будет такими же, за исключением Term
. Например, у меня есть три записи для ID 1002
, я хочу, чтобы объединить их в одной записи, преобразовав срок до DateTime и введение двух новых столбцов, говоря startDate
и EndDate
и ожидаемые результаты следующие
Ожидаемый результат
TrdID StartDate EndDate Price Seller Buyer Quantity
1000 08/01/2015 08/31/2015 1 ABC XYZ 10
1010 08/01/2015 08/31/2015 2 ACB PQR 10
1002 06/01/2015 08/31/2015 1.5 ABX PEW 60
из приведенных выше данных, можно увидеть, что у меня есть два новых столбца с именем StartDate
и EndDate
вместо Term
столбца, который используется для получения значений для обоих StartDate
и EndDate
. Кроме того, есть изменения в Quantity
в последней строке, которая является суммой всех величин для конкретного ID, т.е., No.Of times ID repeated*Quantity
Вот, у меня есть два случая, чтобы решить
case1:. Если это всего лишь одна запись для определенного ID
, скажем, 1000
, тогда StartDate
будет первым днем месяца в столбце «Срок», а EndDate будет последним днем месяца в Term
т.е. 08/01/2015 and 08/31/2015
. Никаких изменений Quantity
Вариант 2:. Если имеется несколько записей для конкретного ID
сказать 1002
(все условия будут в последовательности), то StartDate
будет первый день наименьшего месяца, т.е., 06/01/2015
и EndDate будет быть последним днем наибольшего месяца столбца «Срок», т. е., 08/31/2015. Quantity=No.Of times ID repeated*Quantity
т., 20*3=60
Мой результате список будет типа
public class ProcessedResult
{
public int TrdID;
public DateTime StartDate;
public DateTime EndDate;
public double Price;
public string Seller;
public string Buyer;
public bigint Quantity;
}
Могу ли я знаю хороший способ решить эту проблему?
Что вы пробовали? Где вы застряли? 'GroupBy',' Min' и 'Max' кажутся разумными функциями. –
Если есть несколько записей с одним и тем же TrdID, будут ли значения цены, продавца, покупателя и количества одинаковыми для всех записей? –
Да, они такие же – DoIt