为什么我不能在OData中使用LINQ的First/FirstOrDefault方法?

Oma*_*mar 9 linq odata

我可以做以下事情:

container.Users.Where(u => u.Name == "Omar").FirstOrDefault()

container.Users.FirstOrDefault(u => u.Name == "Omar")

返回一个NotSupportedException (The method 'FirstOrDefault' is not supported.).

由于这些基本相同,为什么不支持?

Ree*_*sey 11

OData提供程序使用的LINQ Translation引擎无法处理所有方案.

虽然它们在逻辑上是相同的,但必须生成每个表达式以构建查询字符串.引擎不支持第二种形式.

  • 你必须在FirstOrDefault之前使用.例如container.Users.Where(u => u.Name =="Omar").FirstOrDefault(); (3认同)