在课堂上我有这两个属性:
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
显然,我没有正确设置数据,但无法弄清楚我应该怎么做。
答案 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
中有一个未使用的类级变量,编译器只是通知你可能已经忘记了它(可能只是删除它)。