使用Linq To Sql从DataGridView获取所选行后面的实体

Alv*_*n S 2 c# datagridview linq-to-sql

在DataGridView的选定行后面检索Linq实体的优雅/正确方法是什么?我在表单Load事件中填充我的DataGridView:

this.Database = new MyAppDataContext();
var userList = from c in this.Database.Users
                       orderby c.LastName
                       select c;
        this.gridUserList.DataSource = userList;
Run Code Online (Sandbox Code Playgroud)

然后,在我正在执行此操作的表单的DoubleClick事件中:

        int userPK = Convert.ToInt32(this.gridUserList.CurrentRow.Cells["colUserPK"].Value);
        var user = (from c in this.Database.Users 
                    where c.UserPK == userPK select c).First() ;
        //Do something with user object
Run Code Online (Sandbox Code Playgroud)

似乎应该有一种更优雅的方式来获取双击的用户行.

Alv*_*n S 7

这是我找到的最佳选择:

var selectedUser = (User)this.gridUserList.CurrentRow.DataBoundItem;
Run Code Online (Sandbox Code Playgroud)

如果您使用BindingSource,另一个选项是:

var selectedUser = (User)this.userBindingSource.Current;
Run Code Online (Sandbox Code Playgroud)