在动态集合中对具有空值的列进行排序时引发ArgumentException

时间:2018-11-12 10:01:30

标签: c# .net

我正在尝试对动态集合进行排序,当该列没有空值时,它可以正常工作。如果该列的值为空,则对动态集合进行排序将引发ArgumentException。这是示例dynamiccollectionsimplesample.zip

`var dt = GetDataTable();
var dynamicCollection = new ObservableCollection<ExpandoObject>();
foreach (System.Data.DataRow row in dt.Rows)
{
    ExpandoObject dyn = new ExpandoObject();
    dynamicCollection.Add(dyn);
    foreach (System.Data.DataColumn column in dt.Columns)
    {
        var dic = (IDictionary<string, object>)dyn;
        dic[column.ColumnName] = row[column];
    }
}
var expressionFunc = GetExpressionFunc("OrderID");
var source = dynamicCollection.AsQueryable();
var sourceType = source.ElementType;
var paramExpression = Expression.Parameter(sourceType, sourceType.Name);
var cExp = Expression.Constant("OrderID");
var iExp = Expression.Invoke(expressionFunc, new Expression[] { cExp, paramExpression });
var lambda = Expression.Lambda(iExp, paramExpression);
var orderedSource = source.Provider.CreateQuery(
Expression.Call(typeof(Queryable),"OrderBy",new Type[] { source.ElementType,lambda.Body.Type },source.Expression,
lambda));
var enumerable = orderedSource as IEnumerable;
if (enumerable.GetEnumerator().MoveNext())
{
}`

任何人都可以更新我,为什么在动态集合中使用空值排序会引发异常? 对于动态集合中的空值,空值将显示为Curly短语{},如下图所示, Value of the null value column

0 个答案:

没有答案