Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编辑Linq中的DataGridView单元格到实体_C#_Linq_Datagridview - Fatal编程技术网

C# 编辑Linq中的DataGridView单元格到实体

C# 编辑Linq中的DataGridView单元格到实体,c#,linq,datagridview,C#,Linq,Datagridview,当我在C应用程序中使用Linq to Entities将数据库中的数据绑定到DataGridView时,我使DataGridView成为只读且无法编辑 是否可以编辑DataGridView中的数据以及保存在数据库中的更改 这是我在对第一个查询应用一些过滤后将数据绑定到DGV的代码: private void ViewResults(IQueryable<Hero> viewResult) { dgdResult.DataSource = (from r in viewRes

当我在C应用程序中使用Linq to Entities将数据库中的数据绑定到DataGridView时,我使DataGridView成为只读且无法编辑

是否可以编辑DataGridView中的数据以及保存在数据库中的更改

这是我在对第一个查询应用一些过滤后将数据绑定到DGV的代码:

private void ViewResults(IQueryable<Hero> viewResult)
{
     dgdResult.DataSource = (from r in viewResult
                             select new
                             {
                                 Name   = r.Name,
                                 Rarity = r.Rarity,
                                 Speed  = r.Speed,
                                 Attack = r.Attack,
                                 Target = r.Target
                              }).ToList(); 
 }

这很有趣,我没意识到它是用匿名类型实现的。不过很容易复制

var heroes = (List<LittleHero>)dgdResult.DataSource;
最简单的方法可能是在表单内部创建一个只包含所需字段的私有类,因为您不会在其他任何地方使用它

public partial class Form1 : Form
{
    ...
    ...

    private void ViewResults(IQueryable<Hero> viewResult)
    {
        dgdResult.DataSource = (from r in viewResult
                                select new LittleHero
                                           {
                                               Name = r.Name,
                                               Rarity = r.Rarity,
                                               Speed = r.Speed,
                                               Attack = r.Attack,
                                               Target = r.Target
                                           }).ToList();
    }

    private class LittleHero
    {
        public string Name { get; set; }
        public string Rarity { get; set; }
        public string Speed { get; set; }
        public string Attack { get; set; }
        public string Target { get; set; }
    }
}
至于保存它,这有点广泛,取决于您使用的技术

不过,通过强制转换数据源,您可以轻松地从DataGridView获取集合

var heroes = (List<LittleHero>)dgdResult.DataSource;

对我已经读到它与匿名类型有关,但我不确定。这证实了这一点,匿名类型将使GridView不可编辑。谢谢你的回答。