无法为此找出正确的linq查询

时间:2018-04-21 03:20:39

标签: c# sql asp.net winforms linq

我想在datagrid视图框中生成一个列表。我有userId, uId ,我想首先使用id搜索数据库中的用户,然后显示用户对应的用户名和角色名。我怎样才能做到这一点? 下面,我尝试使用UserId搜索用户,但由于我是新手,我知道括号后面的其余代码是不对的。我可以在语法上使用一些帮助。感谢

var list = _db.AspNetUserRoles.FirstOrDefault(w => w.UserId == uId)
            {
                w.AspNetUser.UserName,
                w.AspNetRole.Name
            });

            dataGridView1.DataSource = list;

2 个答案:

答案 0 :(得分:3)

使用Where子句代替FirstOrDefault,因为FirstOrDefault返回序列的第一个元素。在Where子句后,使用Select创建一个包含UserNameName属性的匿名类:

var list = _db.AspNetUserRoles.Where(w => w.UserId == uId).Select(w => new
            {
                UserName = w.AspNetUser.UserName,
                Name = w.AspNetRole.Name
            }).ToList();

dataGridView1.DataSource = list;

答案 1 :(得分:0)

正如lan Mercer所说,FirstOrDefault首先返回或默认(单个) 值,如果您需要满足条件的元素列表,请使用{ {1}}。

where