2012-01-26 4 views
1

Dans un de mes C# condition que j'ai datatable dans lequel j'ai données suivantesQuel est le meilleur moyen de filtrer les données?

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

En sortie je veux deux séries de données

OutPut-1: Pour chaque catégorie unique, combien resorces ont travaillé

Category NoOfResorces 
A   2 
B   2 
C   1 

sortie-2: Combien de fois resorces travaillé pour la catégorie unquie comme

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

Quelle est la meilleure façon d'obtenir une sortie, c'est-à-dire soit un filtre datable, soit un LINQ?

Addition: Quelqu'un peut-il LINQ expert me dira un bon site en ligne ou un livre pour apprendre LINQ?

Répondre

1

Voici votre première exigence:

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)); 

Ceci est la seconde requête:

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)); 
+0

Merci Tim, Connaissez-vous un bon lien/livre pour LINQ? –

+0

http://stackoverflow.com/a/6018401/284240 Btw, ajouté la deuxième requête ainsi. –

+0

Est-il possible de convertir SUMMARY en DataTable? Je reçois une erreur typecast. –

Questions connexes