使用LINQ获取满足特定条件的数据表行号

时间:2012-02-15 14:32:40

标签: c# linq

如何获得符合特定条件的数据表行数?例如,我有一个带有“DateTime”列的数据表。我想检索数据表的行号,其中“DateTime”等于变量startTime。

我知道如何检索实际行,但不知道数据表中行的行数。

任何帮助将不胜感激:)

3 个答案:

答案 0 :(得分:7)

int count = tblData.AsEnumerable()
    .Count(row => row.Field<DateTime>("DateTime").Equals(startTime));

或作为查询:

int count = (from row in tblData.AsEnumerable()
             where row.Field<DateTime>("DateTime").Equals(startTime)
             select row).Count();

答案 1 :(得分:6)

如果我正在阅读正确的问题,使用允许索引的第二个输入的Select重载可能适合您。像

这样的东西
var indices = 
    table.AsEnumerable()
         .Select((row, index) => new { row, index })
         .Where(item => item.row.Field<DateTime?>("DateTime") == startTime)
         .Select(item => item.index)
         .ToArray();

如果该日期与第一行,第三行和第六行匹配,则数组将包含索引0,2和5.如果您希望行号到,则可以在查询中为每个索引添加1从1开始(例如:.Select(item => item.index + 1)

答案 2 :(得分:-1)

这是不可能的。请注意,使用SQL(我假设您使用SQL),不保证返回的行顺序。您的行根据主键进行物理排序。因此,如果您需要可靠的行标识符,则必须使用主键编号/ ID。

相关问题