LINQ创建匿名类型数组错误
本文关键字:数组 错误 类型 创建 LINQ | 更新日期: 2023-09-27 17:54:11
我正在尝试使用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();
但是我得到一个错误如下,但我没有使用任何系统。Int64变量。
无法强制转换类型"System"。Int64'类型'System.Object'。LINQto 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的结果
问题可能出在排序逻辑中,即这一行:
Expression conversion = Expression.Convert(Expression.Property(param, fieldName), typeof(object));
如错误消息所述,LINQ到实体不支持这种类型的转换。您要么需要事先使用.ToList()
执行查询,要么需要重新制定排序逻辑。