Linq使用中2个问题集锦
2019-03-15 本文已影响0人
游泳的鱼SF
一、join子句其中一个表达式的类型不正确
如果提示上述错误一般是由于在使用join进行多个字段equals时出现
from a in ListA
join b in ListB on new {a.Id,a.Code} equals new {b.Id,b.Code}
注意上述
new {a.Id,a.Code} equals new {b.Id,b.Code}
在ListA和ListB中的Id和Code属性名称必须一致,否则就会出现标题所述错误。
二、无法创建“匿名类型”类型的常量值;此上下文仅支持基元类型或枚举类型
如果出现上述错误一般是由于from的第一个为IQueryable对象造成的
from a in context.Users
join b in ListB on new {a.Id,a.Code} equals new {b.Id,b.Code}
注意上述中
from a in context.Users
join b in ListB
其中context.Users是IQueryable,ListB是IList,对于此问题可采用以下方式解决:
1.context.Users改为context.Users.ToList();
2.将context.Users和ListB顺序调整,改为
from a in ListB
join b context.Users in on new {a.Id,a.Code} equals new {b.Id,b.Code}
三、关于Guid比较使用equals赋值问题
在使用Lambda表达式时候关于guid字段不要使用equals进行比较,比如以下写法不行,会在运行时报错
context.User.Where(u=>u.Id.Equals(id))
应该改为:
context.User.Where(u=>u.Id == id)