我是c#新手,这完全把我难住了。我有一个带有许多文本框的WPF表单,用于在空间上表示地图的每个区域(PropertyZone
)所需的服务数量。
我可以编写一个LINQ查询,将所有必要的数据带回DataGrid
,但我完全无法访问超出该范围的数据。我曾试图将数据转储到DataTable
中,但无济于事。我可以看到DataGrid
中的数据,但我不知道如何遍历行。我不在乎我是否使用DataGrid
, DataTable
, Collection
或任何其他方法来访问数据。在跌跌撞撞的Collection
似乎是一个很好的解决方案,但使用inner join
s和count()
似乎是我的失败。
产生两列数据:
Column1=PropertyZone
Column2=CountOfServicesInThatPropertyZone
我想看看Column1
Row1
,并基于此值,将Column2
Row1
的值转储到与Column1
Row1
中的值同名的文本框中,并为每两列中的所有行执行此操作。
这是LINQ查询确实工作,但我已经完全无法访问数据。
var query =
from o in con.ORDER_LINE_TABLEs
join p in con.PROPERTY_TABLEs on o.PropertyNumber equals p.PropertyNumber
where o.ServiceNumber == 2
group o by p.PropertyZone into g
select new { PropertyZone = g.Key, CountOfServicesInThatPropertyZone = g.Count() };
ServiceDataGrid.ItemsSource = query;
我希望这是清楚的。
如果您想访问特定的项,则必须运行查询并将结果存储在某处,例如在List中。然后,您可以将DataGrid绑定到相同的List:
var query =
from o in con.ORDER_LINE_TABLEs
join p in con.PROPERTY_TABLEs on o.PropertyNumber equals p.PropertyNumber
where o.ServiceNumber == 2
group o by p.PropertyZone into g
select new { PropertyZone = g.Key, CountOfServicesInThatPropertyZone = g.Count() };
var myList = query.ToList();
ServiceDataGrid.ItemsSource = myList;
var row1Col1Value = myList[0].PropertyZone;
var row1Col2Value = myList[0].CountOfServicesInThatPropertyZone;