C# 如何向DataGridView添加数据

C# 如何向DataGridView添加数据,c#,winforms,linq,datagrid,lambda,C#,Winforms,Linq,Datagrid,Lambda,我有一个像这样的结构 X={ID="1", Name="XX", ID="2", Name="YY" }; 如何将此数据转储到两列的DataGridView gridView就像 ID| Name 我们可以用LINQ来做这件事吗。我是新来的DataGridViewPleaese帮我做这件事 提前感谢首先,您需要向datagrid添加两列。您可以在设计时这样做。请参见Columns属性。 然后根据需要添加行 this.dataGridView1.Rows.Add("1", "XX");

我有一个像这样的结构

 X={ID="1", Name="XX",
    ID="2", Name="YY" };
如何将此数据转储到两列的
DataGridView

gridView就像

ID| Name

我们可以用LINQ来做这件事吗。我是新来的
DataGridView
Pleaese帮我做这件事


提前感谢

首先,您需要向datagrid添加两列。您可以在设计时这样做。请参见Columns属性。 然后根据需要添加行

this.dataGridView1.Rows.Add("1", "XX");
LINQ是一种“查询”语言(即Q),因此修改数据超出了它的范围


也就是说,您的
DataGridView
可能绑定到
ItemsSource
,可能是
ObservableCollection
或类似类型。在这种情况下,只需执行类似于
X.ToList().ForEach(yourGridSource.Add)
(这可能需要根据网格中的源类型进行调整)。

您应该这样做以形成您的代码

DataGridView.DataSource=yourlist


DataGridView.DataBind()

我最喜欢的方法是使用名为“Map”的扩展函数:

public static void Map<T>(this IEnumerable<T> source, Action<T> func)
{
    foreach (T i in source)
        func(i);
}

假设您有这样一个类:

public class Staff
{
    public int ID { get; set; }
    public string Name { get; set; }
}
并假设您已将一个
DataGridView
拖放到表单中,并将其命名为dataGridView1

您需要一个用于保存数据的文件来绑定
DataGridView
。这就是你可以做到的:

private void frmDGV_Load(object sender, EventArgs e)
{
    //dummy data
    List<Staff> lstStaff = new List<Staff>();
    lstStaff.Add(new Staff()
    {
        ID = 1,
        Name = "XX"
    });
    lstStaff.Add(new Staff()
    {
        ID = 2,
        Name = "YY"
    });

    //use binding source to hold dummy data
    BindingSource binding = new BindingSource();
    binding.DataSource = lstStaff;

    //bind datagridview to binding source
    dataGridView1.DataSource = binding;
}
private void frmDGV_加载(对象发送方,事件参数e)
{
//虚拟数据
List lstStaff=新列表();
lstStaff.Add(新员工()
{
ID=1,
Name=“XX”
});
lstStaff.Add(新员工()
{
ID=2,
Name=“YY”
});
//使用绑定源保存虚拟数据
BindingSource绑定=新的BindingSource();
binding.DataSource=lstStaff;
//将datagridview绑定到绑定源
dataGridView1.DataSource=绑定;
}

webforms?winforms?wpf?silverlight?我在设计时添加了两列。现在我需要在
网格视图中显示数据
谢谢。。。我需要遍历这个结构。所以我必须使用
for
foreach
循环。我们可以用
LAMBDA
表达式来表示这个吗?是的。有很多选择。我想您可能会使用数据绑定作为最好的方法—您不需要绑定源。您可以直接将列表分配给grids数据源。是的,我们不需要绑定源,我们可以直接将列表绑定到grid的数据源。使用bindingsource的优点是,如果列表已更改/更新,我们可以稍后刷新绑定源。网格也将获得刷新。请使用System.ComponentModel.BindingList,以便该列表通知DataGridView已添加项等。
private void frmDGV_Load(object sender, EventArgs e)
{
    //dummy data
    List<Staff> lstStaff = new List<Staff>();
    lstStaff.Add(new Staff()
    {
        ID = 1,
        Name = "XX"
    });
    lstStaff.Add(new Staff()
    {
        ID = 2,
        Name = "YY"
    });

    //use binding source to hold dummy data
    BindingSource binding = new BindingSource();
    binding.DataSource = lstStaff;

    //bind datagridview to binding source
    dataGridView1.DataSource = binding;
}