Linq 查询在 select 语句中给出了模糊的调用错误

Linq query gives me ambigious invocation error on the select statement

构建对 return 个处于等待状态且与特定实体相关的工作流的查询...

当我尝试在我的 linq 查询中编写 select 语句时,我在 select 语句中收到错误 "Ambigious invocation"。我不确定这到底是什么意思。这是我的代码,有人在正确的方向上有提示或要点吗?

                List<AsyncOperation> processes = (from p in orgSvcContext.AsyncOperationSet
                             where p.PrimaryEntityType == entityLogicalName
                                   && p.RegardingObjectId.Id == regardingObjectId
                                   && p.Name == processName
                                   && p.StatusCode.Value == 10 
                             select new AsyncOperation { Id = p.Id, StateCode = p.StateCode, StatusCode = p.StatusCode })
           .ToList();

您似乎正在使用两个命名空间,它们实现了具有相同参数的 select 方法,因此它们不明确。 尝试使用整个命名空间

var a = System.Linq.Select(source);

或命名空间的别名

using LINQ = System.Linq;
...
var a = LINQ.Linq.Select(source);

问题似乎是,找到了两个 Select 方法。 一个在 Queryable 中(接受从 IQueryable<> 派生的 class),一个在 Enumerable 中(接受从 IEnumerable<> 派生的 class)。

您的 orgSvcContext.AsyncOperationSet 似乎同时实现了两个接口,这意味着编译器不知道选择哪一个。

您应该能够通过首先在 orgSvcContext.AsyncOperationSet 上调用 AsEnumerable 或 AsQueryable 来解决您的问题,无论哪种方法最适合您。

这应该看起来像这样(检查第一行的 AsEnumerable):

            (from p in orgSvcContext.AsyncOperationSet.AsEnumerable()
             where p.PrimaryEntityType == entityLogicalName
                   && p.RegardingObjectId.Id == regardingObjectId
                   && p.Name == processName
                   && p.StatusCode.Value == 10 
             select new AsyncOperation { Id = p.Id, StateCode = p.StateCode, StatusCode = p.StatusCode })