LINQ to Entities中的LastIndexOf

时间:2014-01-15 14:29:53

标签: c# sql-server linq entity-framework linq-to-entities

我正在使用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())之后执行此操作。

2 个答案:

答案 0 :(得分:7)

你可以尝试

OrderBy(e => e.StringProperty.Length - EntityFunctions.Reverse(e.StringProperty).IndexOf("ooF"))

我认为支持ReverseIndexOf

答案 1 :(得分:4)

使用LINQ to Objects进行排序

var data = db.GetEntities()
    .AsEnumerable()
    .OrderBy(e => e.StringProperty.LastIndexOf("Foo"))
    .ToList();

使用AsEnumerable将允许您保留延迟执行,这比调用ToList然后执行OrderBy更好。