您好我的问题是我有2个表一个是User表,另一个是CustomerUsers我通过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;
}
}
答案 0 :(得分:3)
如果您的lookUp.First(m => m.UserId == u.UserId)
没有返回任何结果,通常会发生问题。
如果没有找到匹配条件的任何结果,您可以使用FirstOrDefault
类似下面的内容而不是First返回null(默认值)。
var myUser = lookUp.FirstOrDefault(m => m.UserId == u.UserId);
不确定为什么要检查lookUp,它是您在连接到DB之前创建的新列表。它总是空的(如果我不理解它错了)。