代码之家  ›  专栏  ›  技术社区  ›  Kishore Kumar

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

  •  2
  • Kishore Kumar  · 技术社区  · 14 年前

    DataTable 对于少量或大量数据,要从datatable中选择数据,可以使用 Datatable.Select() 方法或去LINQ。哪一个更快更有效?

    3 回复  |  直到 14 年前
        1
  •  7
  •   Rob    12 年前

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

    在我看来,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查询更大,但我个人认为它更可读

        2
  •  0
  •   Rune FS    12 年前

    哪一个最快?只有你能说。

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

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

    如果您没有确凿的证据表明select是一个性能问题,那么请考虑可读性。在我看来,这就是LINQ解决方案。

        3
  •  -4
  •   Johnny    14 年前

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