1

如何通过计算属性查询对象:My Book 实体:

Book{
    //DB field
    bookID int PK,
    bookName nvarchar,
    artID int FK Article(artID)
    int OriginalPrice;
    int Discount;
    //computed
    public int SellPrice{
        get{
            return (OriginalPrice - OriginalPrice*Discount/100 )/500*500;
        }
    }

}

我想选择所有 SellPrice > 5000 的书,但我不能在 LINQ 查询字符串或 lambda 中使用 SellPrice。我做了一些谷歌搜索,这看起来不错。但不能用我的表达来SellPrice计算

4

2 回答 2

2

如果不具体化查询,就不能使用计算表达式。
在您的情况下,您可以在 LINQ 查询中展开表达式。我认为您正在使用 /500*500 以 500 个单位截断。

var books = context.Books.Where(b => ((int)((OriginalPrice - (int)(OriginalPrice * Discount / 100) )/500))*500 > 5000).ToList();
于 2015-07-16T10:19:07.777 回答
1

Try this, it may help you:

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

Extension Method ToDecimal is

public static class Extensions
    {            
        public static decimal ToDecimal(this int value)
        {
            return Convert.ToDecimal(value);
        }
    }
于 2015-07-16T10:02:06.153 回答