我有一个通用列表,我想按两个属性排序,优先级,然后按描述填写下拉列表。
我知道当我现在完全可以做对象列表的类型时
list = list.Orderby(x=>x.property1).ThenOrderBy(x=>x.property2).
我的问题是如何检查对象上是否存在property1和property2,然后根据这些属性对列表进行排序。
答案 0 :(得分:2)
因为您使用的是通用列表,编译器会为您检查。
例如:如果您编写类似
的代码List<Object> list = new List<Object>();
var newlist = list.Orderby(x=>x.property1).ThenOrderBy(x=>x.property2);
你会在property1&amp;上遇到编译器错误property2,因为编译器无法在Object类型上找到这些属性。
如果你想支持每个应该具有这两个属性的不同类型,正确的方法是创建一个具有这两个属性的接口,让你想支持的每个类型实现该接口,然后使用约束像阿图罗提议的那样。
像
这样的东西interface ICanBeSorted
{
string property1 {get;}
string property2 {get;
}
public List<T> MySortMethod(List<T> list) where T : ICanBeSorted
{
return list.OrderBy(x=>x.property1).ThenOrderBy(x=>x.property2);
}
此方法将能够对实现接口ICanBeSorted的所有类型进行排序。
答案 1 :(得分:0)
您可以将选择器包装在id
块中:
gridMenuCustomItems: [
{
title: 'Export to Texter',
action: function($event) {
console.log($scope.gridApi);
alert('do the export here');
},
order: 210
}
],
用法:
try-catch
答案 2 :(得分:0)