Roy*_*mir 6 .net linq datatable
过滤内存对象(datatble):
这样做有很大的不同:
var t = dt.Select("id=2");
Run Code Online (Sandbox Code Playgroud)
VS
var g = dt.AsEnumerable().Where(f => f["id"].ToString() == "2");
Run Code Online (Sandbox Code Playgroud)
我认为DataTable.Select需要更多的内存比Enumerable.Where,因为后者只是在一个循环DataRowCollection的DataTable,而老DataTable.Select会建立像新对象Select或DataExpression它甚至返回新对象(DataRow[]从查询).Enumerable.Where只需在循环中使用谓词来确定返回的内容.它也是懒惰地执行,所以你可以从结果中取10行.
var rows = dt.AsEnumerable()
.Where(row => row.Field<int>("id") == 2)
.Take(10); // not possible with DataTable.Select
Run Code Online (Sandbox Code Playgroud)
两者都是内存中的查询,所以没有太大的区别.
我会选择什么是更具可读性,功能强大,maintanable也强类型(Field扩展): Linq-To-DataTable.