我创建了以下LINQ查询来演示此问题:
string[] dateStrings = new string[] { "2009-07-20 13:00:00", "2009-07-20 16:00:00", "2009-07-20 09:00:00" };
DateTime dateValue = DateTime.MinValue;
var results =
from dateString in dateStrings
where DateTime.TryParse(dateString, out dateValue)
orderby dateValue descending
select dateValue;
Run Code Online (Sandbox Code Playgroud)
您希望结果是相反顺序的DateTimes列表:
20-7-2009 16:00:00
20-7-2009 13:00:00
20-7-2009 9:00:00
但我得到的只有:
20-7-2009 9:00:00
20-7-2009 9:00:00
20-7-2009 9:00:00
我究竟做错了什么?如果删除orderby语句,您会注意到DateTime的正常列表.
Amy*_*y B 10
声明了dateValue在哪里?注意它只能容纳一个值.
试试这个:
string[] dateStrings = new string[] { "2009-07-20 13:00:00",
"2009-07-20 16:00:00", "2009-07-20 09:00:00" };
var results =
dateStrings.Select(s =>
{
DateTime v;
bool parsed = DateTime.TryParse(s, out v);
return new {Parsed = parsed, Value = v };
})
.Where(x => x.Parsed)
.Select(x => x.Value)
.OrderByDescending(d => d);
Run Code Online (Sandbox Code Playgroud)
试试这个方法
var results =
from dateString in dateStrings
orderby (Convert.ToDateTime(dateString)) descending
select (Convert.ToDateTime(dateString));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6597 次 |
| 最近记录: |