C# DataGridView在设置DataSource时不显示

C# DataGridView在设置DataSource时不显示,c#,datagridview,C#,Datagridview,我使用LINQ从DB加载浮点数组。即使我成功加载了数组,我也无法制作DataGridView来显示该数组 这是我的密码 float[] balances = client.LoadBalance(id); // LoadBalance() give me an array of floats of customer who has the specified id dataBalance.DataSource = balances; 我尝试了以下方法,但没有效果 dataBalance.Re

我使用LINQ从DB加载浮点数组。即使我成功加载了数组,我也无法制作DataGridView来显示该数组

这是我的密码

float[] balances = client.LoadBalance(id); 
// LoadBalance() give me an array of floats of customer who has the specified id
dataBalance.DataSource = balances;
我尝试了以下方法,但没有效果

dataBalance.Refresh();
dataBalance.Parent.Refresh();

我在
float[]balances=client.LoadBalance(id)之后添加了一个断点我确信
负载平衡(id)
有效。
请帮忙

您需要dataBalance.DataBind();在dataBalance.DataSource=余额之后

解决方案,只需为您的
余额创建一个类

比如说,
BalanceClass

public class BalanceClass
{
    public float balances { get; set; }
}
然后

float[]balances=client.LoadBalance(id);
List bal=新列表();
foreach(余额中的var项目)
余额添加(新余额类(){balances=item});
ataGridView2.DataSource=bal.ToList();

您可以这样做

     dataGridView1.DataSource = 
            (LoadBalance(id) ?? new float[0])
                .Select(x => new { Number = x })
                .ToList();

它起作用了!你能告诉我为什么吗?此外,您不需要
bal.ToList()
,因为
bal
是一个列表,我删除了
ToList()
,它仍然有效这是一个关于谢谢的好解释,我的意思是为什么创建一个新类将这些值放在我的数据库中,而将它们作为
列表
不起作用?这仅适用于winform中的web(ASP.NET),我们没有这种方法,也没有必要。
float[] balances = client.LoadBalance(id);
List<BalanceClass> bal = new List<BalanceClass>();
foreach (var item in balances)
   bal.Add(new BalanceClass() { balances = item});
ataGridView2.DataSource = bal.ToList();
     dataGridView1.DataSource = 
            (LoadBalance(id) ?? new float[0])
                .Select(x => new { Number = x })
                .ToList();