我该如何编写这个LINQ查询?

时间:2011-06-01 14:16:58

标签: c# linq

我正试图围绕这个名为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编写此内容?

显然,这不是一个查询。

5 个答案:

答案 0 :(得分:5)

这将返回IEnumerable<DateTime>,其中包含Date_Time列的所有元素:

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

答案 1 :(得分:3)

在这种特定情况下,LINQ可能实际上并不是有益的。请参阅this post by Eric Lippert以及有关this previous SO question的讨论。

但是你会这样做。

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

答案 2 :(得分:2)

foreach(DateTime dt in MySqlDateTimeQueryResult().AsEnumerable()
                            .Select(row => row.Field<DateTime>("Date_Time")))
    Console.WriteLine(dt);

答案 3 :(得分:2)

在这种情况下,我不确定你真的需要 LINQ ,但如果你真的想用 LINQ 来表达你在做什么,试试这个:

var query = from  DataRow r in table.Rows select r["Date"];

 foreach (var q in query)
 {
     Console.WriteLine(q.ToString());
 }

答案 4 :(得分:0)

 var dates = table.AsEnumerable().Select(r => r["Date_Time"]);