Linq-запрос для EAV - PullRequest
       4

Linq-запрос для EAV

3 голосов
/ 01 сентября 2011

У меня есть большая (4M записей) таблица на SQL Server со следующими столбцами:

  • Id (идентификатор записи);
  • PropertyName (строка, которая представляетимя свойства);
  • PropertyValue (целое число, представляющее значение свойства);

имейте в виду, что Id не является уникальным для этой таблицы.По сути, я хотел бы написать запрос LINQ, который извлекает идентификаторы и все связанные с ними пары PropertyName / PropertyValue:

  • Id
  • словарь (возможно?) PropertyName -> PropertyValue;

возможно ли это как-то?

Заранее спасибо

1 Ответ

7 голосов
/ 01 сентября 2011

Не уверен относительно производительности, но вы можете использовать GroupBy для группировки ваших данных по идентичным идентификаторам

Что-то вроде:

var result =
  from x in whatever
  group x by x.Id into g
  select new { 
         Id = g.Key, 
         Data = g.ToDictionary(i => i.PropertyName, i => i.PropertyValue)
  };

См. 101 LINQ Samples , чтобы узнатьбольше о Linq

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...