Мне нужно сгруппировать записи из списка словарей, используя динамический linq. Словари основаны на возвращаемых полях для покупки SQL-запроса, а поля для группировки считываются из файла конфигурации, поэтому я использую строки в предложении GroupBy для имитации уже созданного предложения. Я могу получить группу и краткое изложение, в котором я нуждаюсь, но я не могу получить список со всей полной информацией. Когда я запускаю этот код, я получаю сообщение об ошибке: «Не существует подходящего индексатора в типе« IGrouping`2 »». Это происходит в поле «sign»:
var g = dicList.GroupBy("new(it[\"code\"] as Code, it[\"subcode\"] as Subcode)", "it").Select("new(Key.Code as Code,Key.Subcode as Subcode, it[\"sign\"] as Sign, Sum(Int32(it[\"value\"])) as Value)");
Это мой полный код:
void CreateLists()
{
List<Dictionary<string, object>> dicList = new List<Dictionary<string, object>>();
Dictionary<string, object> p0 = new Dictionary<string, object>();
Dictionary<string, object> p1 = new Dictionary<string, object>();
Dictionary<string, object> p2 = new Dictionary<string, object>();
Dictionary<string, object> p3 = new Dictionary<string, object>();
Dictionary<string, object> p4 = new Dictionary<string, object>();
Dictionary<string, object> p5 = new Dictionary<string, object>();
p0.Add("hash", Guid.NewGuid().ToString());
p0.Add("code", 2123345);
p0.Add("subcode", "CS23");
p0.Add("sign", "AWR");
p0.Add("value", 30);
p3.Add("hash", Guid.NewGuid().ToString());
p3.Add("code", 5003345);
p3.Add("subcode", "CS32");
p3.Add("sign", "AWR");
p3.Add("value", 15);
p1.Add("hash", Guid.NewGuid().ToString());
p1.Add("code", 2123345);
p1.Add("subcode", "CS23");
p1.Add("sign", "AWR");
p1.Add("value", 5);
p2.Add("hash", Guid.NewGuid().ToString());
p2.Add("code", 2123345);
p2.Add("subcode", "CS23");
p2.Add("sign", "AWR");
p2.Add("value", 5);
p5.Add("hash", Guid.NewGuid().ToString());
p5.Add("code", 1213788);
p5.Add("subcode", "CS12");
p5.Add("sign", "AWR");
p5.Add("value", 50);
p4.Add("hash", Guid.NewGuid().ToString());
p4.Add("code", 5003345);
p4.Add("subcode", "CS43");
p4.Add("sign", "AWR");
p4.Add("value", 15);
dicList.Add(padrao0);
dicList.Add(padrao3);
dicList.Add(padrao1);
dicList.Add(padrao4);
dicList.Add(padrao2);
dicList.Add(padrao5);
var g = dicList.GroupBy("new(it[\"code\"] as Code, it[\"subcode\"] as Subcode)", "it").Select("new(Key.Code as Code,Key.Subcode as Subcode, it[\"sign\"] as Sign, Sum(Int32(it[\"value\"])) as Value)");
}
Мне нужно вернуть ключи, поле для подписи и резюме. Как я могу это сделать?