为DataGridView设置DataSource

时间:2013-12-26 18:55:23

标签: c# winforms linq datagridview

在课堂上我有这两个属性:

public Dictionary<int, int> memCache { get; set; }
public Dictionary<int, MESIState> cacheStates { get; set; }

我使用此代码加入它们:

cache1 = new MESICache(mainMemory);
var info = from a in cache1.memCache
           join b in cache1.cacheStates on a.Key equals b.Key
           select new { address = a.Key, value = a.Value, state = b.Value };

当我将此info变量设置为DataGridView对象的DataSource时,我看不到任何输出。但是有一些警告,如:

Warning 2   The field 'MESI.Form1.addressDataGridViewTextBoxColumn' is never used   C:\Users\User\Path\MESI\MESI\Form1.Designer.cs  495 64  MESI

显然,我没有正确设置数据,但无法弄清楚我应该怎么做。

1 个答案:

答案 0 :(得分:3)

在LINQ结束时调用.ToList()之后查看它是否有效:

var info = (from a in memCache
            join b in cacheStates on a.Key equals b.Key
            select new {address = a.Key, value = a.Value, state = b.Value}).ToList();

dataGridView1.DataSource = info;

当我没有尝试,只是将IEnumerable绑定到DataGridView时,它就不显示了。

至于您所看到的警告,“addressDataGridViewTextBoxColumn永远不会被使用”,您可能在Form1中有一个未使用的类级变量,编译器只是通知你可能已经忘记了它(可能只是删除它)。