Linq to Entities:如何创建返回集合/ iqueryable的可重用自定义表达式

时间:2016-09-23 16:28:50

标签: c# linq linq-to-entities dry

我想创建一个可以在Select()投影中使用的可重用方法。这是一个简单的例子:

public partial class Product
{
    public IQueryable<ProductImage> GetProductImages(bool ActiveOnly)
    {
        return this.ProductImages.Where(i => !ActiveOnly || i.IsActive);
    }
}

public class App
{
    public void Main()
    {
        var product = db.Products.Select(p => new {
            p.Name,
            p.GetProductImages(true)
        }
    }
}

以上标准LINQ to Entities does not recognize the method ...将会失败,我知道我可以致电db.Products.ToList().Select(...),但这不是我想要的,就像我的情况一样,我是为了避免将不必要的数据存入内存。

我已经成功使用Microsoft.Linq.Translations一段时间来自定义属性,但是这在我的示例中不起作用,因为我需要传入一个参数,所以方法实际上是我能看到这个的唯一方法工作。非常感谢任何帮助。

0 个答案:

没有答案