Oskar Eriksson
Oskar Eriksson

Reputation: 855

LINQ query works agains SQL Server but not Entity Framework/LINQ to SQL

I have a LINQ query which works fine when I test it in LINQPad agains my SQL Server database, however when I test it against my Entity Framework context (which is required in my LightSwitch .NET app) it gives an error that .First() must be user as a final operation.

Table.Where(re => !re.UserSave.HasValue || re.UserSave == INT PARAMETER)
     .GroupBy(re => re.UniqueKey)
     .Select(g => g.FirstOrDefault(x => x.UserSave.HasValue) ?? g.First())

It suggest that using FirstOrDefault() instead, but since i call First() only if FirstOrDefault() returns false I have no idea how to get around this problem.

NotSupportedException: The method 'First' can only be used as a final query operation. Consider using the method 'FirstOrDefault' in this instance instead.

Thanks for any help!

Upvotes: 1

Views: 387

Answers (1)

MarcinJuraszek
MarcinJuraszek

Reputation: 125620

Change your query to use FirstOrDefault instead of First:

Table.Where(re => !re.UserSave.HasValue || re.UserSave == INT PARAMETER)
     .GroupBy(re => re.UniqueKey)
     .Select(g => g.FirstOrDefault(x => x.UserSave.HasValue) ?? g.FirstOrDefault())

Upvotes: 2

Related Questions