具有属性类型为object的模型。对象必须是WinRT中的一个字符串属性类型
型号:
public class Employee
{
private object _BirthDate;
public object BirthDate
{
get { return this._BirthDate; }
set
{
this._BirthDate = value;
this.RaisePropertyChanged("BirthDate");
}
}
}
视图模型:
填充的出生日期数据,如在下面。
if (i % 5 == 0)
{
emp.BirthDate = "ABC";
// emp.Name = "NUll";
}
else if (i % 4 == 0)
{
emp.BirthDate = null;
// emp.Name = "DBNull";
}
else
emp.BirthDate = new DateTime(1/1/2013);
有100个生日。我尝试使用LINQ查询和LAMDA展开式对数据进行排序。
private void GetSortedQuerableCollection_Click(object sender, RoutedEventArgs e)
{
var sourceType = new Employee().GetType();
var source = (this.datagrid.ItemsSource as IEnumerable).AsQueryable() as IQueryable;
var paramExpression = Expression.Parameter(source.ElementType, sourceType.Name);
var lambda = GetLambdaWithComplexPropertyNullCheck(source, "BirthDate", paramExpression, sourceType);
var data = OrderBy(source, "BirthDate", sourceType);
}
在数据中,结果为“对象必须是一种字符串”。
注意:GetLambdaWithComplexPropertyNullCheck是有很多代码的方法。如果我也包括它,它的外观不一致,并根据StackOverFlow规范它的删除页面。但它只是一个计算排序的表达式。
让我有任何想法来解决这个问题?
我不清楚问题出在哪里。什么不行? – Chris
尝试对“ABC”,null和DateTime值进行排序没有意义。你将不得不重新思考这个概念。事实上,你必须使用'object',应该打开红灯。 – Gustav
@Filburt:我注意到你做了一个编辑评论“删除绒毛”,但你实际上也改变了一些代码。这是故意的吗?它从代码中删除了“lambda”的实际使用... – Chris