0

我正在尝试在 SubSonic 上OrderBy()使用自定义调用,如下所示:IComparerIQueryable

IQueryable<FooObject> sortedFoos = 
  FooObject.All()
    .OrderBy(f => f, new FooObjectComparer());

但是,当我尝试枚举sortedFoos或创建一个PagedList<FooObject>使用它时,我得到一个 System.Exception:“不支持 MemberInit 类型的 LINQ 表达式节点”。

这是以下的实现FooObjectComparer

public class FooObjectComparer : IComparer<FooObject>
{
  public FooObjectComparer() {}

  public int Compare(FooObject x, FooObject y)
  {
    return x.MyProperty.CompareTo(y.MyProperty);
  }
}

(这是一个用于调试目的的简单实现。实际实现会更复杂)。

我在这里想念什么?

4

1 回答 1

2

您缺少的是 SubSonic 无法反映您的比较运算符并弄清楚如何将其转换为 SQL。可能您最好的选择是首先将对象拉入内存(基于任何标准),然后使用您的比较器对它们进行排序。

于 2009-11-09T21:21:01.033 回答