2014-12-05 171 views
0

我有一个集合字符串日期值其中有一些是空字符串(“”)的集合。List.OrderBy返回空字符串

当我使用排序依据条款

,下面的语句

的thelist = theList.OrderBy(功能(X)x.age).ToList()

返回空字符串集合。

但是,如果我用OrderByDescending操作,其结果是正确的下行数据值排序。 “2014-10-31 00:00:00.000”,“2014-09-30 00:00:00”,“2014-11-30 00:00:00”,“ “2014-08-31 00:00:00.000”。

这可能是什么问题吗?

谢谢

瓦马的Piyush

+0

请提供真正的代码。你提供的例子不足以看到这里有什么错误。 – CSharpie 2014-12-05 21:00:53

+0

这里是代码:Dim returnCollection方式列表(中FundedAccountsDetail)=新名单(共FundedAccountsDetail) 选择案例sortBy 案 “billedthru” 如果升序= “ASC” 然后 returnCollection = reportCollection.OrderBy(功能(x)x .BilledThru.Substring(0,10))。ToList() elseif的升序= “DESC” 然后 returnCollection = reportCollection.OrderByDescending(功能(x)的x.BilledThru).ToList() 结束如果 案例否则 returnCollection = reportCollection End Select – 2014-12-05 21:50:46

回答

1

我的第一直觉是,如果x.billedthru是有史以来少于10个字符,你可以看到此行为。它是否返回行,如果你尝试这样:

Dim returnCollection As List(Of FundedAccountsDetail) = New List(Of FundedAccountsDetail) 
Select Case sortBy 
Case "billedthru" 
    If Ascending = "ASC" Then 
     returnCollection = reportCollection.OrderBy(Function(x) x.BilledThru).ToList() 
    ElseIf Ascending = "DESC" Then 
     returnCollection = reportCollection.OrderByDescending(Function(x) x.BilledThru).ToList() 
    End If 
Case Else 
     returnCollection = reportCollection 
End Select 

如果是这样,那么问题是子字符串。如果不是,我承认这很令人困惑。我可能会尝试的是,然后从if的第一个分支中移除该命令,并查看它是否返回行。基本上工作的方式,直到如果工作的分支,然后一步一步地重建,直到我开始有问题。

+1

我删除了Substring并尝试了你的建议。 OrderBy仍然返回所有空字符串。 OrderByDescending运作良好! – 2014-12-05 23:19:04

+1

我使用“”和OrderBy()工作来替换NULL值!非常感谢。 – 2014-12-05 23:39:49

+0

很高兴帮助! – EGP 2014-12-05 23:41:26