在 LINQ to Entities 查询中无法构造实体或复杂类型“Cits.Data.LineImg”。

错误代码:

adlist = _sImg.Where(o => o.AdType == 11).OrderBy(o => o.Desc).OrderByDescending(o => o.Id).Select(i => new LineImg
{
    Url = i.Url,
    ImgUrl = i.ImgUrl,
    Title = i.Title
}).ToList();

修正代码:

adlist = _sImg.Where(o => o.AdType == 11).OrderBy(o => o.Desc).OrderByDescending(o => o.Id).Select(i => new LineImg
{
    Url = i.Url,
    ImgUrl = i.ImgUrl,
    Title = i.Title
}) as List<LineImg>;

ef原生错误代码:

db.Set<LineImg>().Where(o => o.AdType == 11).OrderBy(o => o.Desc).OrderByDescending(o => o.Id).Select(i => new LineImg
{
    Url = i.Url,
    ImgUrl = i.ImgUrl,
    Title = i.Title
}).ToList();

ef原生正确代码:

var list = db.Set<LineImg>().Where(o => o.AdType == 11).OrderBy(o => o.Desc).OrderByDescending(o => o.Id).Select(i => new
{
    Url = i.Url,
    ImgUrl = i.ImgUrl,
    Title = i.Title
}) as IEnumerable<LineImg>;
var list = db.Set<LineImg>().Where(o => o.AdType == 11).OrderBy(o => o.Desc).OrderByDescending(o => o.Id).Select(i => new dto
{
    Url = i.Url,
    ImgUrl = i.ImgUrl,
    Title = i.Title
}).ToList();

网上说“ linq 选择数据时候 不能new 已知的对象,只能匿名的。 但是如果从一个 List 列表 就可以new 已知的类。”这个说法不认同。

猜你喜欢

转载自www.cnblogs.com/coce/p/9459147.html