Linq查询在select语句

时间:2015-05-27 18:36:52

标签: c# linq dynamics-crm

构建查询以返回处于等待状态且与某个实体相关的工作流...

当我尝试在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();

error

2 个答案:

答案 0 :(得分:2)

问题似乎是,找到了两个Select方法。 一个在Queryable中(接受一个派生自IQueryable&lt;&gt;的类)和一个在Enumerable中(接受一个派生自IEnumerable&lt;&gt;的类)。

您的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 })

答案 1 :(得分:1)

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

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

或命名空间上的别名

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