2016-12-05 4 views
0

Я храню в MongoDB записей со следующим определением:Как я могу получить доступ к List <KeyValuePair <string,int>> из MongoDB

public class StorageRecord 
{ 
    public int GrId { get; set; } 
    public List<KeyValuePair<string,int>> Data { get; set; } 
} 

и образец, как этот ниже:

var storageRecord = new StorageRecord 
{ 
GrId = 12, 
Data = new List<KeyValuePair<string, int>>() 
    { 
     new KeyValuePair<string, int>("xx", 12), 
     new KeyValuePair<string, int>("yy", 13), 
     new KeyValuePair<string, int>("zz", 14) 
    } 
} 

Пожалуйста, скажите мне, как должен ли я написать запрос для извлечения Sum всех записей, которые имеют, например, xx ключ в списке DataKeyValuePair.

Я начал со следующим утверждением, но не знаю, что должно быть следующим:

var TotalXX = collection 
      .Where(r => r.GrId == grId) 
      .GroupBy(t => t.GrId) 
      .Select(v => v.Select(c => c.Data)); 
+0

На стороне записки, ISN 't 'List >' так же, как 'Dictionary <>'? – RandomStranger

ответ

3

Я думаю, вам не нужно GroupBy:

var TotalXX = collection 
    .Where(storage => storage.GrId == grId) 
    .Sum(storage => storage.Data.Count(kv => kv.Key == "xx")); 
+0

Да, отлично, спасибо и да, он работает даже без 'GroupBy' –

+0

. Дополнительный вопрос: что, если я хотел бы подытожить значения для конкретного ключа во всех записях? –

+0

@TomaszKowalczyk: я не понимаю, удаляю 'Where' и меняю' Count' соответственно ... возможно –

Смежные вопросы