如何深入查看LINQ查询结果中的特定数据?

时间:2017-10-06 15:15:15

标签: c# 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 items = from d in query where d.formName == "someName" select d.items;

但我不知道如何通过特定字符串隔离项目。 我想做以下

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

但我不知道语法。

1 个答案:

答案 0 :(得分:0)

如果您希望从查询中返回单个项目,请使用.FirstOrDefault扩展名。 SO:

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