我有一个带有两个属性字符串和整数的ObservableCollection。我想查询并返回具有最大值的int。
数据示例:
类别,WorkOrderVersion
AAA 1
AAA 2
AAA 3
BBB 1
BBB 2
如果Category ==“ BBB”,我想返回2
这是我的意思:
var maxWorkOrderVersion = WorkOrderDetailsObsCollection.Where(x=>x.Category == firstSelection.Category) return Max(WorkOrderVersion);`
答案 0 :(得分:1)
如果您只想为所选WorkOrderVersion
获得最大的Category
,则可以使用Max
将其返回:
int maxWorkOrderVersion = WorkOrderDetailsObsCollection
.Where(x => x.Category == firstSelection.Category)
.Max(x => x.WorkOrderVersion);
否则,如果您想要具有最大Category
的指定WorkOrderVersion
的整个对象,则可以按属性对列表进行排序(在过滤Category
之后),并选择一个FirstOrDefault
(如果不存在指定null
的任何项目,则将返回Category
的默认值):
var maxWorkOrderVersion = WorkOrderDetailsObsCollection
.Where(x => x.Category == firstSelection.Category)
.OrderByDescending(x => x.WorkOrderVersion)
.FirstOrDefault();
答案 1 :(得分:0)
如果您想在WorkOrderDetailsObsCollection更改或Category属性更改时得到通知,则可以使用我的ObservableComputations库。使用该库,您可以进行编码:
var maxWorkOrderVersion = WorkOrderDetailsObsCollection
.Filtering(x=> x.Category == firstSelection.Category)
.Selecting(x => x.WorkOrderVersion)
.Maximazing();
// maxWorkOrderVersion.Value is what you need
maxWorkOrderVersion为INotifyPropertyChanged。实际值存储在Value属性中。确保上面代码中提到的属性通过INotifyPropertyChanged界面通知更改。