我有一个函数,我传递一个字符串然后使用linq实体来检查我传递的字符串值是否已经存在于数据库中。为此,我写了这个函数。
public static bool UserExistChk(String StrUserId) {
using (SBVEntities dbcontx = new SBVEntities())
{
return dbcontx.Users.Contains(dbcontx.Users.FirstOrDefault(e => e.UserID == StrUserId));
}
}
但是我收到错误 - 无法创建类型'MySBVApp.Models.User'的常量值。在此上下文中仅支持原始类型(例如Int32,String和Guid')。
请帮助我是实体框架和linq的新手。
答案 0 :(得分:1)
您可以使用Any
扩展名方法:
public static bool UserExistChk(String StrUserId)
{
using ( SBVEntities db = new SBVEntities() )
{
return db.Users.Any( o => o.UserID == StrUserId );
}
}
答案 1 :(得分:0)
它应该是这样的。
using (SBVEntities dbcontx = new SBVEntities())
{
return (dbcontx.Users
.FirstOrDefault(e => e.UserID == StrUserId) != null
? true : false);
}
答案 2 :(得分:0)
您可以使用:
public static bool UserExistChk(String StrUserId)
{
using (SBVEntities dbcontx = new SBVEntities())
{
var query = from u in dbcontx.Users
where u.UserId.Contains(strUserId)
select u;
}
Return query.Count > 0
}