如何使用SQLite.NET进行降序排序?OrderByDescending()给了我错误:";Order By不支持:xx=>;转换(xx).ID";
我正在尝试实现一种方法来检索表中按ID降序排列的所有行 代码如下:如何使用SQLite.NET进行降序排序?OrderByDescending()给了我错误:";Order By不支持:xx=>;转换(xx).ID";,sqlite,xamarin.ios,xamarin.android,Sqlite,Xamarin.ios,Xamarin.android,我正在尝试实现一种方法来检索表中按ID降序排列的所有行 代码如下: public IEnumerable<T> GetItemsDescending<T>() where T : IBusinessEntity, new() { lock (locker) { return Table<T>().Select(i => i).OrderByDescending(xx => x
public IEnumerable<T> GetItemsDescending<T>() where T : IBusinessEntity, new()
{
lock (locker)
{
return Table<T>().Select(i => i).OrderByDescending(xx => xx.ID).ToList();
}
}
从以下SQLite方法:
private TableQuery<T> AddOrderBy<U>(Expression<Func<T, U>> orderExpr, bool asc)
{
if (orderExpr.NodeType == ExpressionType.Lambda)
{
var lambda = (LambdaExpression)orderExpr;
MemberExpression mem = null;
var unary = lambda.Body as UnaryExpression;
if (unary != null && unary.NodeType == ExpressionType.Convert)
{
mem = unary.Operand as MemberExpression;
}
else
{
mem = lambda.Body as MemberExpression;
}
if (mem != null && (mem.Expression.NodeType == ExpressionType.Parameter))
{
var q = Clone<T>();
if (q._orderBys == null)
{
q._orderBys = new List<Ordering>();
}
q._orderBys.Add(new Ordering
{
ColumnName = Table.FindColumnWithPropertyName(mem.Member.Name).Name,
Ascending = asc
});
return q;
}
else
{
throw new NotSupportedException("Order By does not support: " + orderExpr);
}
}
else
{
throw new NotSupportedException("Must be a predicate");
}
}
没有答案
好吧,这就是我正在做的工作:
public static IEnumerable<PanelLog> GetPanelLogsDescendingSql(params object[] args)
{
return me.db.Query<PanelLog>("select * from PanelLog ORDER BY ID DESC");
}
公共静态IEnumerable GetPanelLogsDescendingSql(参数对象[]参数)
{
return me.db.Query(“按ID DESC从PanelLog订单中选择*);
}
返回表()。选择(i=>i).OrderByDescending(xx=>xx.ID).ToList();
或
return me.db.Query(“按ID DESC从PanelLog顺序选择*);
适合我。ID的字段类型是什么?您可以发布您的PanelLog类吗?抱歉,鉴于您提供的代码,我无法复制您报告的问题。您是否有复制此问题的完整示例?此处提供的TaskyPro示例:在结构上与我正在做的非常相似。如果更改行
return(从表()中的i选择i).ToList()
toreturn(Table().OrderByDescending(i=>i.ID)。选择(i=>i)).ToList()
在TaskDatabase
类中,它会导致相同的错误。对于延迟,很抱歉,我已经下载了TaskyPro并进行了更改(在TaskDatabase.GetItems中),它对我有效。目前我正在运行alpha-iosv6.3.6.76(在模拟器和设备以及Android模拟器中运行良好)
public class PanelLog : IBusinessEntity
{
public PanelLog()
{
}
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public uint Sequence { get; set; }
public DateTime Time { get; set; }
public string Message { get; set; }
public bool Alarm { get; set; }
}
public static IEnumerable<PanelLog> GetPanelLogsDescendingSql(params object[] args)
{
return me.db.Query<PanelLog>("select * from PanelLog ORDER BY ID DESC");
}
return Table<T>().Select(i => i).OrderByDescending(xx => xx.ID).ToList();
return me.db.Query<PanelLog>("select * from PanelLog ORDER BY ID DESC");