[英]How do I return Last() as an IEnumerable from a DataTable
How do I return Last() as an IEnumerable from a DataTable? 如何从DataTable中将Last()作为IEnumerable返回?
I want IEnumerable because I may pass in a larger subset of rows. 我想要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());
Cannot convert from
DataRow
toIEnumerable<DataRow>
无法从DataRow
转换为IEnumerable<DataRow>
You could put it in an array: 您可以将其放在数组中:
Set(new[]{ Data.AsEnumerable().Last() });
or you could use this: 或者您可以使用以下方法:
Set(Data.AsEnumerable().Reverse().Take(1));
or this: 或这个:
Set(Data.AsEnumerable().Skip(Data.Rows.Count - 1));
this non-LINQ approach is probably the most efficient way, because it avoids a loop: 这种非LINQ的方法可能是最有效的方法,因为它避免了循环:
Set(new[]{ Data.Rows[Data.Rows.Count-1] });
For what it's worth, you could also use following extension ;-) 对于它的价值,您还可以使用以下扩展名;-)
public static IEnumerable<T> AsSequence<T>(this T obj)
{
yield return obj;
}
... ...
Set(Data.AsEnumerable().Last().AsSequence());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.