哪一个使用; Datatable.Select()还是LINQ?

时间:2010-08-02 06:41:59

标签: c# linq

如果我有一个包含少量或大量数据的DataTable,要从数据表中选择数据,我可以使用Datatable.Select()方法或转到LINQ。哪一个更快更有效?

3 个答案:

答案 0 :(得分:7)

哪一个最适合您的情况?或者,更重要的是,您查询的数据量的速度差异是否值得选择一个而不是另一个?

在我看来,LINQ通常比任何其他形式的数据过滤更容易阅读,并且优于使用DataTable.Select存在的优势,至少部分地,强类型使得更难犯错误

// Using DataTable.Select()
DataRow[] records = myTable.Select("(MyIntField > 30 AND MyStringField == 'StringValue') OR AnotherField > 70");

// Using LINQ
var records = from record in myTable.AsEnumerable()
              where (record.Field<int>("MyIntField") > 30 
                     && Record.Field<string>("StringValue") == "StringValue") 
                    || 
                    (record.Field<int>("AnotherField") > 70)
              select record;

LINQ查询更大,但我个人认为它更具可读性

答案 1 :(得分:0)

哪一个会最快?只有你可以说。

  • 数据量是多少
  • 返回多少条记录
  • 您打算如何使用结果,例如你会一直使用结果中的每一条记录吗?
  • 过滤器的复杂性

所有这些都会影响哪种解决方案最快。与往常一样,如果您没有性能问题,请不要进行优化。如果确实存在性能问题,请使用配置文件找出优化位置。

如果您没有确凿的证据表明选择是性能问题,请考虑可读性。在我看来,这转化为LINQ解决方案。

答案 2 :(得分:-4)

如果你想要更快的执行,那么Datatable.Select()或你可以去LINQ