我有以下方法:

控制器:

...
var appmap = Services.GetReqAppMapList(value);
var applist = Services.GetApplicationList(docid, appid, reqid, appmap);
...


模型:

public static IEnumerable<AppMap> GetReqAppMapList(int aiRequestTypeId)
{
    try
    {
        var appmap = new List<AppMap>();
        using (var eties = new eRequestsEntities())
        {
            appmap = (from ram in eties.ReqAppMaps
                      where ram.IsActive == 1
                      select new AppMap
                      {
                          RequestTypeId = ram.RequestTypeId
                      }).ToList();
            return appmap;
        }
    }
    catch(Exception e)
    {
        throw e;
    }
}

public static IEnumerable<TicketApplication> GetApplicationList(int aiDocumentTypeId, int aiApplicationTypeId, int aiRequestTypeId, IEnumerable<AppMap> appmap)
{
    try
    {
        var applicationlist = new List<TicketApplication>();
        using (var applicationentity = new eRequestsEntities())
        {
            applicationlist = (from app in applicationentity.Applications
                               where 1==1
                                <<<Some Conditions Here???>>>
== && appmap.Contains(app.ApplicationTypeId) ==
                                && app.IsActive == 1
                               select new TicketApplication
                               {
                                   ApplicationId = app.ApplicationId,
                                   Description = app.Description,
                                   DeliveryGroupId = app.DeliveryGroupId,
                                   ApplicationTypeId = app.ApplicationTypeId,
                                   DeliveryTypeId = app.DeliveryTypeId,
                                   DocumentTypeId = app.DocumentTypeId,
                                   SupportGroupId = app.SupportGroupId
                               }).OrderBy(a => a.Description).ToList();

            return applicationlist;
}


我在想如何使用GetReqAppMapList的结果过滤GetApplicationList的查询结果

我有点坚持我必须将某些东西转换/转换为正确类型的事实,因为每次执行结果时,包含(appmap。包含准确),我总是会收到以下错误


  错误4实例参数:无法从转换
  'System.Collections.Generic.IEnumerable<Test.Models.AppMap>'
  'System.Linq.ParallelQuery<int?>'

最佳答案

您应该在一个查询中直接将两个表连接起来。

using (var applicationentity = new eRequestsEntities())
{
    applicationlist = (from app in applicationentity.Applications
                       join ram in applicationentity.ReqAppMaps on app.ApplicationTypeId equals ram.RequestTypeId
                        where ram.IsActive == 1 && app.IsActive == 1
                       select new TicketApplication
                       {
                           ApplicationId = app.ApplicationId,
                           Description = app.Description,
                           DeliveryGroupId = app.DeliveryGroupId,
                           ApplicationTypeId = app.ApplicationTypeId,
                           DeliveryTypeId = app.DeliveryTypeId,
                           DocumentTypeId = app.DocumentTypeId,
                           SupportGroupId = app.SupportGroupId
                       }).OrderBy(a => a.Description).ToList();


您可以删除不再需要的其他方法。没有意义的代码已经死了。

09-07 01:18