user3198545
user3198545

Reputation: 63

LastIndexOf in LINQ to Entities

I'm using LINQ to Entities to fetch elements from a MSSQL data base and I need them sorted by the last index of a string:

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

However, LINQ to Entities does not support LastIndexOf. I've tried searching for similar questions but all I've found was this which does not address my issue (ordering). Searching on MSDN did not yield any results.

What would be the simplest way to accomplish this using LINQ to Entities (I don't want to have to do this after the ToList()).

Upvotes: 6

Views: 5191

Answers (2)

Rawling
Rawling

Reputation: 50114

You could try

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

I think Reverse and IndexOf are supported.

Upvotes: 7

James
James

Reputation: 82096

Do the sorting using LINQ to Objects

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

Using AsEnumerable will allow you to retain deferred execution, it's the better compromise than calling ToList and then performing the OrderBy.

Upvotes: 4

Related Questions