2017-10-06 6 views
0

データの特定の項目にドリルダウンして、結果のリストを出力ウィンドウに出力したいとします。私のクエリの結果は、このLINQクエリ結果の特定のデータをドリルダウンするにはどうすればよいですか?

private IEnumerable<DataRow> _data; 

var query = from data in this._data 
     group data by data.Field<string>("Form Name") into groups //same as Form ID 
     select new 
     { 
      formName = groups.Key, 
      items = from d in groups 
        group d by d.Field<string>("Item Name") into grps 
        let name = grps.Key 
        let documentIDGroups = grps.GroupBy(t => t.Field<string>("Document ID")) 
        let documentIDGroupsCount = documentIDGroups.Count() 

        let distinctDocumentValueCount = from data in documentIDGroups 
               select new 
               { 
                docID = data.Key, 
                distinctDocValueCount = data.Where(t => string.IsNullOrEmpty(t.Field<string>("Document Value").Trim()) == false).Select(t => t.Field<string>("Document Value")).Distinct().Count() 
               } 


        let sum = distinctDocumentValueCount.Sum(t => t.distinctDocValueCount) 

        let distinctItemsNames = from data in grps 
               select data.Field<string>("Item Name").Distinct().Count() 

        let count = distinctItemsNames.Count() 

        select new 
        { 
         itemName = name, 

         documentIDGroups, 
         documentIDGroupsCount, 

         averageChoices = Math.Round(((decimal)sum/documentIDGroupsCount), 2), 

         distinctDocumentValueCount, 

         sum 

        } 
     }; 

だからそのクエリの結果に、私は特定のフォーム名にドリルダウンしたいように見えますし、そこから特定のアイテム名を取得し、その

にその最初のステップはにありますアイテムのグループ化を取得すると私は持っている

しかし、私はどのように特定の文字列で項目を分離するのか分からない。 私は、次の

var item = from d in items where d.itemName == "anItemName" select d; 

をしたいしかし、私は構文を知りません。

答えて

0

クエリから単一のアイテムが返されると予想される場合は、.FirstOrDefault拡張子を使用します。 SO:.FirstOrDefault()、どのように私は項目名で項目を分離することができます(d.formName == "someNameという" Dを選択するクエリではDから)私の最初のクエリを修正し

var item = (from d in items where d.itemName == "anItemName" select d).FirstOrDefault(); 
+0

[OK]をおかげで、VaRのフォーム=次のwueryで? – erotavlas

+0

一般的注意:*正確に* 1のアイテムが必要で、複数のアイテムを取得している場合、または '0'がエラーになる場合は、 '.FirstOrDefault'の代わりに' .First'を使用してください。 –

+0

@erotavlas私はあなたが名前でそれらを分離することによって何を意味するかを正確にはわかりません。名前だけを選択しますか?同じ名前のアイテムがすべて欲しいですか? – akerra

関連する問題