如何从数据表中将 Last() 作为 IEnumerable 返回



如何从数据表中将 Last(( 作为 IEnumerable 返回?

我想要 IEnumerable,因为我可能会传入更大的行子集。

public static void Set(IEnumerable<DataRow> rowsToProcess)
{
    //Do something with rowsToProcess;
}
DataTable data;
//This works:
Set(Data.AsEnumerable());
//This gives an error:
Set(Data.AsEnumerable().Last());

无法从DataRow转换为IEnumerable<DataRow>

你可以

把它放在一个数组中:

Set(new[]{ Data.AsEnumerable().Last() });

或者你可以使用这个:

Set(Data.AsEnumerable().Reverse().Take(1));

或者这个:

Set(Data.AsEnumerable().Skip(Data.Rows.Count - 1));

这种非 LINQ 方法可能是最有效的方法,因为它避免了循环:

Set(new[]{ Data.Rows[Data.Rows.Count-1] });

对于它的价值,您也可以使用以下扩展名;-(

public static IEnumerable<T> AsSequence<T>(this T obj)
{
    yield return obj;
}  

Set(Data.AsEnumerable().Last().AsSequence());

最新更新