如何从DataTable返回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>
答案 0 :(得分:9)
你可以把它放在一个数组中:
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());