3 回答

TA貢獻1850條經(jīng)驗 獲得超11個贊
您不能使用未映射到Where表達式中的數(shù)據(jù)庫列的屬性。您必須基于映射屬性構(gòu)建表達式,例如:
var date = DateTime.Now.AddYears(-from);
result = result.Where(p => date >= p.DOB);
// you don't need `AsQueryable()` here because result is an `IQueryable` anyway
作為未映射Age屬性的替代,您可以將此表達式提取到靜態(tài)方法中,如下所示:
public class clsProfileDate
{
// ...
public DateTime DOB { get; set; } // property mapped to DB table column
public static Expression<Func<clsProfileDate, bool>> IsOlderThan(int age)
{
var date = DateTime.Now.AddYears(-age);
return p => date >= p.DOB;
}
}
然后以這種方式使用它:
result = result.Where(clsProfileDate.IsOlderThan(from));

TA貢獻1770條經(jīng)驗 獲得超3個贊
很多人都會說這是一個錯誤的答案,因為這不是最佳實踐,但你也可以在你的位置之前將其轉(zhuǎn)換為List。
result = result.ToList().Where(p => date >= p.DOB);
Slauma的答案更好,但這也可行。這會花費更多,因為ToList()將對數(shù)據(jù)庫執(zhí)行查詢并將結(jié)果移動到內(nèi)存中。
添加回答
舉報