我使用IEnumerable
作为Repeater
控件的dataSource。我需要将IEnumerable
WHERE 实体属性值等于给定值,然后 ORDER BY 其他一些值。换句话说,我想在一些选定的实体之后对IEnumerable
进行排序。
我猜我将不得不实现IComparer接口,但不知道从哪里开始。也许它可以简单到2 IEnumerables;
一个与我想要的实体首先显示,第二个与其他实体,然后连接它们。
Dim myEnumerable As IEnumerable(Of myEntity) = dbContext.myEntity
myEnumerable.OrderBy(Function(x) x.propertyA **where x.propertyA = "value"**) _
.OrderBy(function(x) x.propertyB)
为简单起见,我将使用IEnumerable(of String)
Dim myEnumerable As IEnumerable(Of String) = {"1", "2", "3", "40", "50"}
myEnumerable.OrderBy(Function(x) where x = "3" Then Order By x.length)
我正在寻找结果排序
答案 0 :(得分:1)
试试这个: -
Dim query = myEnumerable.Where(Function(x) x = "3").Concat(myEnumerable.Where(Function(x) x <> "3").OrderBy(Function(x) x)).ToList()
C#等效: -
var query = myEnumerable.Where(x => x == "3").Concat(myEnumerable.Where(x => x != "3").OrderBy(x => x)).ToList();