将DataGrid列显示为两个类的总和
本文关键字:两个 DataGrid 显示 | 更新日期: 2023-09-27 17:58:12
我有DataGrid
,我想显示两个类的数据:
[DataContract]
public class File
{
[DataMember]
public List<FileRow> radky { get; set; }
}
public class FileRow
{
public int AMOUNT { get; set; }
public string NAME { get; set; } }
//some others variables
}
和
[DataContract]
public class WebService
{
[DataMember]
public List<WSRow> radky { get; set; }
}
public class WSRow
{
public int AMOUNT { get; set; }
public string NAME { get; set; } }
//some others variables
}
这两个类在NAME
和AMOUNT
变量中提供数据。现在,我需要在两个类中获得具有相同NAME
的数据,求和它们的AMOUNT
,并在DataGrid中显示。有什么办法可以做到这一点吗?我应该创建新类吗?
您应该创建一个新类,在其中计算两个对象的amount
变量的和。然后,您可以将List<SumOfAmounts>
绑定到DataGrid上的ItemsSource
属性。
像这样:
SumOfAmounts类别:
public class SumOfAmounts
{
private FileRow _fileRow;
private WSRow _webRow;
public int Sum { get; set; }
public SumOfAmounts(FileRow filerow, WSRow webrow)
{
_fileRow = filerow;
_webRow = webrow;
Sum = _fileRow.AMOUNT + _webRow.AMOUNT;
}
}
在其他类中,您将存储所有的总和:
public class SumStorage
{
// ...
public List<SumOfAmounts> Sums { get; set; }
// ...
public SumStorage(File file, WebService webSvc)
{
Sums = new List<SumOfAmounts>();
foreach(var row in file.radky)
{
var webRow = webSvc.radky.FirstOrDefault(x => x.NAME == row.NAME);
if(webRow != null)
Sums.Add(new SumOfAmounts(row, webRow));
}
}
}
现在可以将数据网格ItemsSource
属性绑定到SumStorage
对象上的Sums
属性。
我对班级命名的想象力很有限,但我希望你能理解。此外,您应该尊重C#命名约定。