如何使用Where子句对通用集合进行排序

时间:2014-10-30 04:57:54

标签: vb.net linq entity-framework entity-framework-4 sql-order-by

我使用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)

我正在寻找结果排序

  • 3
  • 1
  • 2
  • 40
  • 50

1 个答案:

答案 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();