我正在尝试使用 LINQ 从结果集中创建一个匿名类型的数组。
我的代码是
var data = (from s in sortedStudents
select new
{
//id = s.CurrencyId,
cell = new object[] { s.PropertyNumber.ToString(), s.Name,
s.Status.ToString(), "Hello" }
}).ToArray();
但我收到如下错误,但我没有使用任何 System.Int64 变量。
无法将类型“System.Int64”转换为类型“System.Object”。LINQ to Entities 仅支持转换 EDM 基元或枚举类型。
任何想法这里有什么问题。
花了一些时间后,我怀疑我对数据进行排序的逻辑造成了问题,我对日期进行排序的代码是
// Utility method to sort IQueryable given a field name as "string"
// May consider to put in a cental place to be shared
public IQueryable<T> SortIQueryable<T>(IQueryable<T> data, string fieldName, string sortOrder)
{
if (string.IsNullOrWhiteSpace(fieldName)) return data;
if (string.IsNullOrWhiteSpace(sortOrder)) return data;
var param = Expression.Parameter(typeof(T), "i");
Expression conversion = Expression.Convert(Expression.Property(param, fieldName), typeof(object));
var mySortExpression = Expression.Lambda<Func<T, object>>(conversion, param);
return (sortOrder == "desc") ? data.OrderByDescending(mySortExpression)
: data.OrderBy(mySortExpression);
}
现在,当我的列名类型为 system.int64 时,它会产生问题,因为当我对结果执行 .ToArray 时,实际上会执行查询。