Каков наилучший способ фильтрации данных? - PullRequest
1 голос
/ 26 января 2012

В одном из моих требований к c # у меня есть дата, в которой у меня есть следующие данные

Category Topics Resourceworked 
A        tp1    Hemant
A        tp2    Kevin
B        tp3    Haris
B        tp4    Hemant
B        tp5    Hemant
C        tp6    Kevin

В выводе я хочу два набора данных

OutPut-1: для каждой уникальной категории, сколько работало ресурсов

Category  NoOfResorces
A         2
B         2
C         1

Вывод-2: Сколько раз резорсы работали для такой категории, как

Category  Resource   NoOfTime
A         Hemant     1
A         Kevin      1
B         Haris      1
B         Hemant     2
C         Kevin      1

Каков наилучший способ достижения результата, т.е. фильтра данных или LINQ?

Дополнение: Может кто-нибудь эксперт LINQ подскажет мне хороший онлайн-сайт или книгу для изучения LINQ?

1 Ответ

1 голос
/ 26 января 2012

Вот ваше первое требование:

var uniqueCat = from d in tblData.AsEnumerable()
                group d by (string)d["Category"] into Group
                select Group;
var catRes = from grp in uniqueCat
             let c = grp.Select(r => r["Resourceworked"]).Distinct().Count()
             select new {Category = grp.Key, NoOfResorces=c};

var summary = from cr in catRes
         select string.Format("Category:{0} Count:{1}",cr.Category,cr.NoOfResorces);
MessageBox.Show(string.Join(Environment.NewLine,summary));

Это второй запрос:

var uniqueCatRes = from d in tblData.AsEnumerable()
                   group d by new{Cat= d["Category"], Res=d["Resourceworked"]} into Group 
                   select Group;
var catResCount = from grp in uniqueCatRes
                  let Category = grp.Key.Cat
                  let Resource = grp.Key.Res
                  let NoOfResorces = grp.Count()
                  select new { Category,Resource,NoOfResorces };

summary = from crc in catResCount
          select string.Format("Category:{0} Resource:{1} Count:{2}", crc.Category,crc.Resource, crc.NoOfResorces);
MessageBox.Show(string.Join(Environment.NewLine,summary));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...