在EF中按计算属性查询

时间:2015-07-16 09:44:00

标签: c# linq entity-framework properties computed-field

如何通过计算属性查询对象: 我的图书实体:

SellPrice

我想选择所有有SellPrice的书> 5000,但我不能在LINQ查询字符串或lambda中使用SellPrice。 我做了一些谷歌搜索,这似乎是好的。但不能用我的表达式以工作方式计算try: os.makedirs(path) except WindowsError: print "Folder already exists, moving on." except Exception as e: print e error = 1

2 个答案:

答案 0 :(得分:2)

您无法在不实现查询的情况下使用计算表达式 在您的情况下,您可以在LINQ查询中爆炸表达式。 我认为你使用/ 500 * 500来截断500个单位。

var books = context.Books.Where(b => ((int)((OriginalPrice - (int)(OriginalPrice * Discount / 100) )/500))*500 > 5000).ToList();

答案 1 :(得分:1)

试试这个,它可以帮到你:

var books = (from e in context.Books.AsEnumerable()
            where ((e.OriginalPrice.ToDecimal() - e.OriginalPrice * e.Discount.ToDeciaml() / 100).ToDecimal() / 500 * 500) > 5000
            select e).ToList();

扩展方法ToDecimal

public static class Extensions
    {            
        public static decimal ToDecimal(this int value)
        {
            return Convert.ToDecimal(value);
        }
    }