当我尝试 getallUsers() 时,序列不包含匹配元素错误
Sequence contains no matching element error when I try to getallUsers()
你好,我的问题是我有 2 个 table 一个是用户 table 另一个是 CustomerUsers 我 select 他们被 Deleted=0 当我尝试列出所有用户并且有customerId,我的问题是序列不包含匹配元素错误
我的代码在下面,如有帮助将不胜感激
谢谢
我的 Dapper 查询如下:
public List<User> GetAllUsers()
{
List<User> user = new List<User>();
try
{
//var sql = @"SELECT * FROM [User] WHERE Deleted=0";
var sql = @"SELECT * from [User] u LEFT JOIN [CustomerUser] cu ON u.UserId = cu.CustomerUserId WHERE u.Deleted=0";
var lookUp = new List<User>();
using (var cn = Settings.Helper.ConnectionStringBiz())
{
cn.Open();
cn.Query<User,Customer,User>(sql,(u,c)=>
{
var myUser = lookUp.First(m => m.UserId == u.UserId);
if (myUser == null)
{
lookUp.Add(u);
myUser = u;
}
myUser.Customer = c;
return null;
},splitOn:"CustomerId");
}
return lookUp;
}
catch (Exception ex)
{
return user;
}
}
如果您的 lookUp.First(m => m.UserId == u.UserId)
没有 return 任何结果,通常会出现问题。
如果没有找到符合条件的任何结果,您可以使用 FirstOrDefault
类似下面的内容而不是 First returns null(默认值)。
var myUser = lookUp.FirstOrDefault(m => m.UserId == u.UserId);
不确定您为什么要检查查找,它是您在连接到数据库之前创建的新列表。它永远是空的(如果我没有理解错的话)。
你好,我的问题是我有 2 个 table 一个是用户 table 另一个是 CustomerUsers 我 select 他们被 Deleted=0 当我尝试列出所有用户并且有customerId,我的问题是序列不包含匹配元素错误
我的代码在下面,如有帮助将不胜感激
谢谢
我的 Dapper 查询如下:
public List<User> GetAllUsers()
{
List<User> user = new List<User>();
try
{
//var sql = @"SELECT * FROM [User] WHERE Deleted=0";
var sql = @"SELECT * from [User] u LEFT JOIN [CustomerUser] cu ON u.UserId = cu.CustomerUserId WHERE u.Deleted=0";
var lookUp = new List<User>();
using (var cn = Settings.Helper.ConnectionStringBiz())
{
cn.Open();
cn.Query<User,Customer,User>(sql,(u,c)=>
{
var myUser = lookUp.First(m => m.UserId == u.UserId);
if (myUser == null)
{
lookUp.Add(u);
myUser = u;
}
myUser.Customer = c;
return null;
},splitOn:"CustomerId");
}
return lookUp;
}
catch (Exception ex)
{
return user;
}
}
如果您的 lookUp.First(m => m.UserId == u.UserId)
没有 return 任何结果,通常会出现问题。
如果没有找到符合条件的任何结果,您可以使用 FirstOrDefault
类似下面的内容而不是 First returns null(默认值)。
var myUser = lookUp.FirstOrDefault(m => m.UserId == u.UserId);
不确定您为什么要检查查找,它是您在连接到数据库之前创建的新列表。它永远是空的(如果我没有理解错的话)。