【发布时间】:2013-10-30 13:04:42
【问题描述】:
我在内存中有一个如下所示的数据表:
Tape Mask Count
BT1 DML69 3452
BT2 DML69 1569
BT2 DML87 2745
BT3 DML69 3215
BT3 DML87 1542
BT4 DML87 3214
BT5 DML69 2132
BT5 DML87 1241
我需要一个 LINQ 查询,该查询将为每个磁带返回一个数据行,每个磁带一个结果,仅包括具有最大计数的掩码。即
Tape Mask Count
BT1 DML69 3452
BT2 DML87 2745
BT3 DML69 3215
BT4 DML87 3214
BT5 DML69 2132
我尝试了几种不同的方法,但都没有成功。这是我最近的尝试:
foreach (string tape in singOne.GetDistinctTapes(
converter.ConvertProcessesIDToSingOneID(selectedWafer)))
{
var tapeMaskQuery =
from row in tempTable.AsEnumerable()
where row.Field<string>("location1") == tape
select row;
if (tapeMaskQuery.Count() == 1)
{
tapeMaskCountTable.Rows.Add(tapeMaskQuery.ElementAt(0));
}
else
{
var maxMaskQuery =
(from fields in tapeMaskQuery.AsEnumerable()
select new
{
tape = fields.Field<string>("location1"),
mask = fields.Field<string>("mask"),
count = fields.Field<Int64>("count(*)")
}).Max(x => x.count);
tapeMaskCountTable.Rows.Add(maxMaskQuery);
}
}
这里 singOne.GetDistinctTapes() 只返回晶圆上不同磁带的列表。 tempTable 是一个 DataTable,它是本文中第一个表的形式。我检查每个磁带是否有多个结果;如果有,那么我运行“maxMaskQuery”,它似乎只返回一个 DataRow,其中只包括计数列,而不是磁带和掩码列。最后我需要所有三列都出现,就像这篇文章的第二个表一样。
任何有关如何实现此功能的帮助将不胜感激。
问候,
凯尔
【问题讨论】:
标签: c# .net linq datatable max