我有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中显示。这有什么方法可以实现吗?我应该创建新课吗?
答案 0 :(得分:1)
您应该创建一个新类,在其中计算对象的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));
}
}
}
现在,您可以将datagrid ItemsSource
属性绑定到Sums
对象上的SumStorage
属性。
我的想象力对于课程命名非常有限,但我希望你明白这一点。 此外,您应该尊重C# naming conventions。