第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

LINQ to Entities不支持指定的類型成員。僅支持初始值設定項,實體成員和實體導航屬性

LINQ to Entities不支持指定的類型成員。僅支持初始值設定項,實體成員和實體導航屬性

LINQ to Entities不支持指定的類型成員。僅支持初始值設定項,實體成員和實體導航屬性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);}我在這里得到一個例外:LINQ to Entities不支持指定的類型成員“Age”。僅支持初始值設定項,實體成員和實體導航屬性。如果Age不在數(shù)據(jù)庫中,則是我在clsProfileDate類中創(chuàng)建的屬性,用于從DOB計算Age。對此有何解決方案?
查看完整描述

3 回答

?
慕蓋茨4494581

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


查看完整回答
反對 回復 2019-08-28
?
德瑪西亞99

TA貢獻1770條經(jīng)驗 獲得超3個贊

很多人都會說這是一個錯誤的答案,因為這不是最佳實踐,但你也可以在你的位置之前將其轉(zhuǎn)換為List。

result = result.ToList().Where(p => date >= p.DOB);

Slauma的答案更好,但這也可行。這會花費更多,因為ToList()將對數(shù)據(jù)庫執(zhí)行查詢并將結(jié)果移動到內(nèi)存中。


查看完整回答
反對 回復 2019-08-28
  • 3 回答
  • 0 關(guān)注
  • 2176 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號