【发布时间】:2011-04-06 09:50:05
【问题描述】:
我有一个IQueryable<Product>,需要按Name 排序。每个Product 都有一个IQueryable<Category>,也需要按Name 排序。我很难在 Linq 中表达这一点。我可以遍历产品并对每个类别列表进行排序,但看起来很乱。希望 Linq ninja 有更聪明的解决方案。
我的Product 类看起来像:
public class Product {
public string Name { get; set; }
public IQueryable<Category> Categories { get; set; }
}
我的Category 类看起来像:
public class Category {
public string Name { get; set; }
}
目前,我正在这样做:
var myProducts = products.OrderBy(x => x.Name).Select(x => new Product {
Name = x.Name,
Categories = x.Categories(y => y.Name)
});
问题在于,当使用 NHibernate 之类的东西时,这会创建新的 Product 对象,实际上是断开产品与 NH 会话的连接。
【问题讨论】:
-
我不认为这很混乱。对产品进行排序和对类别进行排序是两个概念上完全不同的操作;在代码中将它们分开并没有错。
-
您想要达到的最终状态是什么?一个列表
?
标签: c# linq nhibernate iqueryable