我想深入查看数据中的特定项目,并将结果列表输出到输出窗口。我的查询结果如下所示
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;
但我不知道语法。
答案 0 :(得分:0)
如果您希望从查询中返回单个项目,请使用.FirstOrDefault扩展名。 SO:
var item = (from d in items where d.itemName == "anItemName" select d).FirstOrDefault();