gpt4 book ai didi

entity-framework-4 - LINQ to Entities 不支持指定的类型成员。仅支持初始值设定项、实体成员和实体导航属性

转载 作者:行者123 更新时间:2023-11-29 19:26:13 36 4
gpt4 key购买 nike

var result =
(from bd in context.tblBasicDetails
from pd in context.tblPersonalDetails.Where(x => x.UserId == bd.UserId).DefaultIfEmpty()
from opd in context.tblOtherPersonalDetails.Where(x => x.UserId == bd.UserId).DefaultIfEmpty()
select new clsProfileDate()
{
DOB = pd.DOB
});

foreach (clsProfileDate prod in result)
{
prod.dtDOB = !string.IsNullOrEmpty(prod.DOB) ? Convert.ToDateTime(prod.DOB) : DateTime.Today;
int now = int.Parse(DateTime.Today.ToString("yyyyMMdd"));
int dob = int.Parse(prod.dtDOB.ToString("yyyyMMdd"));
string dif = (now - dob).ToString();
string age = "0";
if (dif.Length > 4)
age = dif.Substring(0, dif.Length - 4);
prod.Age = Convert.ToInt32(age);
}

GetFinalResult(result);
<小时/>
protected void GetFinalResult(IQueryable<clsProfileDate> result)
{
int from;
bool bfrom = Int32.TryParse(ddlAgeFrom.SelectedValue, out from);
int to;
bool bto = Int32.TryParse(ddlAgeTo.SelectedValue, out to);

result = result.AsQueryable().Where(p => p.Age >= from);
}

这里我遇到了一个异常(exception):

The specified type member "Age" is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

年龄不在数据库中,它是我在 clsProfileDate 类中创建的属性,用于根据出生日期计算年龄。有什么解决办法吗?

最佳答案

您不能在 Where 表达式中使用未映射到数据库列的属性。您必须基于映射的属性构建表达式,例如:

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 属性的替代,您可以将此表达式提取到静态方法中,如下所示:

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

关于entity-framework-4 - LINQ to Entities 不支持指定的类型成员。仅支持初始值设定项、实体成员和实体导航属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42128210/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com