我正在使用LINQ to Entities从MSSQL数据库中获取元素,我需要按字符串的最后一个索引排序:
var data = db.GetEntities().
OrderBy(e=>e.StringProperty.LastIndexOf("Foo")).ToList()
但是,LINQ to Entities不支持LastIndexOf
。我已经尝试过搜索类似的问题,但我发现的只有this并没有解决我的问题(订购)。在MSDN上搜索没有产生任何结果。
使用LINQ to Entities实现此目的的最简单方法是什么(我不想在ToList())
之后执行此操作。
答案 0 :(得分:7)
你可以尝试
OrderBy(e => e.StringProperty.Length - EntityFunctions.Reverse(e.StringProperty).IndexOf("ooF"))
我认为支持Reverse
和IndexOf
。
答案 1 :(得分:4)
使用LINQ to Objects进行排序
var data = db.GetEntities()
.AsEnumerable()
.OrderBy(e => e.StringProperty.LastIndexOf("Foo"))
.ToList();
使用AsEnumerable
将允许您保留延迟执行,这比调用ToList
和然后执行OrderBy
更好。