C# 使用C在linq中将两个排序结果合并为一个结果#

C# 使用C在linq中将两个排序结果合并为一个结果#,c#,linq,C#,Linq,我订购两种类型的查询。我想把结果显示为一个。如果第一个查询和第二个查询具有count,则这两个查询都将合并并显示其中一个查询的结果。因此,我创建了3个列表,如作业,作业1,作业2。我在工作1和工作2中获得价值。然后,我已将使用union分配到作业3 代码 IQueryable<Job> jobs = _repository.GetJobs(); IQueryable<Job> jobs1 = _repository.GetJobs(); IQueryable<Job

我订购两种类型的查询。我想把结果显示为一个。如果第一个查询和第二个查询具有count,则这两个查询都将合并并显示其中一个查询的结果。因此,我创建了3个列表,如作业作业1作业2。我在工作1和工作2中获得价值。然后,我已将使用union分配到作业3

代码

IQueryable<Job> jobs = _repository.GetJobs();
IQueryable<Job> jobs1 = _repository.GetJobs();
IQueryable<Job> jobs2 = _repository.GetJobs();

List<int> lstId = null;
List<int> lstUpdatedListId = null;
List<int> lstConId=null;
var order = _db.GetOrderDetails().Where(od => od.Masters.Id != null && od.OrderId == od.Master.OrderId && od.Master.Status == true && od.ValidityTill.Value >= currentdate).OrderByDescending(od => od.ValidityTill).Select(ord => ord.Master.Id.Value);
var order1 = _vasRepository.GetOrderDetails().Where(od => od.Masters.ConId != null && od.OrderId == od.Masters.OrderId && od.Masters.PaymentStatus == true && od.ValidityTill.Value >= currentdate).OrderByDescending(od => od.ValidityTill).Select(ord => ord.Masters.ConId.Value);
var updatedVacancyList = _repository.GetJobs().Where(c => c.UpdatedDate != null && updateFresh <= c.UpdatedDate).Select(c => c.Id);

 if (order1 .Count() > 0)
        {
            lstConId = order1.ToList();

            Func<IQueryable<Job>, IOrderedQueryable<Job>> orderingFunc = query =>
            {
                if (order1.Count() > 0)
                    return query.OrderByDescending(rslt => lstConId.Contains(rslt.Con.Id)).ThenByDescending(rslt=>rslt.CreatedDate);
                else
                    return query.OrderByDescending(rslt => rslt.CreatedDate);
            };

            jobs1 = orderingFunc(jobs);

        }

if (order.Count() > 0)
        {
            lstId = order.ToList();
            lstUpdatedJobsListId = updatedVacancyList.ToList();

            Func<IQueryable<Job>, IOrderedQueryable<Job>> orderingFunc = query =>
            {
                if (order.Count() > 0)
                    return query.OrderByDescending(rslt => lstId.Contains(rslt.Id)).ThenByDescending(rslt => lstUpdatedJobsListId.Contains(rslt.Id)).ThenByDescending(rslt=>rslt.CreatedDate);
                if (updatedVacancyList.Count() > 0)
                    return query.OrderByDescending(rslt => lstUpdatedJobsListId.Contains(rslt.Id)).ThenByDescending(rslt => rslt.UpdatedDate);
                else
                    return query.OrderByDescending(rslt => rslt.CreatedDate);
            };

        jobs2 = orderingFunc(jobs);
      }

        jobs = jobs1.Union(jobs2);
IQueryable作业=_repository.GetJobs();
IQueryable jobs1=_repository.GetJobs();
IQueryable jobs2=_repository.GetJobs();
列表lstId=null;
列表lstUpdatedListId=null;
列表lstConId=null;
var order=\u db.GetOrderDetails().Where(od=>od.Masters.Id!=null&&od.OrderId==od.Master.OrderId&&od.Master.Status==true&&od.validityll.Value>=currentdate)。OrderByDescending(od=>od.validityll)。选择(order=>order.Master.Id.Value);
var order1=\u vasRepository.GetOrderDetails().Where(od=>od.Masters.ConId!=null&&od.OrderId==od.Masters.OrderId&&od.Masters.PaymentStatus==true&&od.validityll.Value>=currentdate)。OrderByDescending(od=>od.validityll)。选择(order=>order=>order.Masters.ConId.Value);
var updatedVacancyList=_repository.GetJobs()。其中(c=>c.updateDate!=null&&updateFresh c.Id);
if(order1.Count()>0)
{
lstConId=order1.ToList();
Func orderingFunc=query=>
{
if(order1.Count()>0)
返回query.OrderByDescending(rslt=>lstConId.Contains(rslt.Con.Id))。然后返回ByDescending(rslt=>rslt.CreatedDate);
其他的
返回query.OrderByDescending(rslt=>rslt.CreatedDate);
};
jobs1=orderingFunc(作业);
}
if(order.Count()>0)
{
lstId=order.ToList();
lstUpdatedJobsListId=updatedVacancyList.ToList();
Func orderingFunc=query=>
{
if(order.Count()>0)
返回query.OrderByDescending(rslt=>lstId.Contains(rslt.Id)).ThenByDescending(rslt=>lstUpdatedJobsListId.Contains(rslt.Id)).ThenByDescending(rslt=>rslt.CreatedDate);
if(updatedVacancyList.Count()>0)
返回query.OrderByDescending(rslt=>lstUpdatedJobsListId.Contains(rslt.Id))。然后返回ByDescending(rslt=>rslt.UpdateDate);
其他的
返回query.OrderByDescending(rslt=>rslt.CreatedDate);
};
jobs2=orderingFunc(作业);
}
jobs=jobs1.联合(jobs2);
我在按如下方式运行应用程序时出错

由于文本数据类型不可比较,因此无法将其选择为不同的文本数据类型。


我需要帮助来纠正这个问题。我还想按降序排列。

数据库中的一列是“文本”类型。将其转换为varchar(MAX)

请显示
作业的定义
。作业是一个表。Id、cosId、名称、createddate、updatedate。。。。。