I’m struggling to find LINQ orderby examples, where data is ordered by a column index. Is this possible to do?
Thank you
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
There’s no such concept as a column in LINQ, only fields and properties. What you mean is probably to specify the index of a property in an anonymous type you create:
That’s not possible, because a) you can’t order by a projection property (output value in the anonymous type), and b) you can’t order by index. To work around a), you can use the “into” keyword:
If you use a LINQ provider based on IQueryable (like LINQ to SQL, as opposed to LINQ to objects which is based on IEnumerable), you could parse the expression tree, find the expression based on some index, and add the corresponding OrderBy method call.
AddOrderByPosition would have to create a new expression tree that uses the original query expression as a source (a sub query, which is essentially what “into” creates too) and add a call to OrderBy at the end (no need for Select). You want to read the C# specs’ chapter about transformation of query expressions first, and you should have some experience with reflection and expressions if you want to get this done in a sensible amount of time.
If you want that, I have some sample code I can provide.