我将如何编写此LINQ查询

本文关键字:LINQ 查询 何编写 | 更新日期: 2023-09-27 17:58:14

我正试图了解这个名为LINQ的"新概念"。听说过吗?LOL

无论如何,我已经读了足够多的书,知道使用LINQ可以写得更清楚,但我不明白我该怎么写:

DataTable table = MySqlDateTimeQueryResult();
for (int i = 0; i < table.Rows.Count; i++) {
  DataRow r = table.Rows[i];
  DateTime dt = (DateTime)r["Date_Time"];
  Console.WriteLine(dt);
}

编辑[标题更改]:我该如何使用LINQ写这篇文章?

显然,这不是一个疑问。

我将如何编写此LINQ查询

这将返回一个包含Date_Time列所有元素的IEnumerable<DateTime>

    table.Rows.Select(r=>((DateTime)r["Date_Time"]));

在这种特定情况下,LINQ实际上可能没有好处。请参阅Eric Lippert的这篇文章和对之前SO问题的讨论。

不过,你会这样做。

table.Rows                       // Start with an IEnumerable
    .Select(r => r["Date_Time"]) // Map each item to something, in this case extract the value
    .ToList()                    // ForEach comes off of List, not IEnumerable
    .ForEach(x => Console.WriteLine(x)); // Do something with each

在这种情况下,我不确定您是否真的需要LINQ,但如果您真的想用LINQ来表达您正在做的事情,请尝试以下操作:

var query = from  DataRow r in table.Rows select r["Date"];
 foreach (var q in query)
 {
     Console.WriteLine(q.ToString());
 }
foreach(DateTime dt in MySqlDateTimeQueryResult().AsEnumerable()
                            .Select(row => row.Field<DateTime>("Date_Time")))
    Console.WriteLine(dt);
 var dates = table.AsEnumerable().Select(r => r["Date_Time"]);