如果加入其他数据库,如何在LINQ中排序

本文关键字:LINQ 排序 其他 数据库 如果 | 更新日期: 2023-09-27 18:15:03

LINQ排序

我有2数据库CustomerEntities和BillEntities我想从CustomerEntities中获取CustomerName并对其进行排序但它没有数据我想要。tolist()只一次因为如果多次使用它会很慢。tolist ()

using (var db1 = new CustomerEntities())
 {  using (var db2 = new BillEntities())
   {
   var CustomerData = db1.Customer.Select(s=> new{s.CustomerCode,s.CustomerName}).ToList();
   var BillData = (from t1 in db2.Bill
                  select new {
                    BillCode = t1.Billcode,
                    CustomerCode = t1.Customer,
                    CustomerName = ""; //have no data
                  });
   }
   if(sorting.status==true)
   {
    BillData= BillData.OrderBy(o=>o.CustomerName); //can't sort because CustomerName have no data
   }
   var data = BillData .Skip(sorting.start).Take(sorting.length).ToList(); // I want .ToList() just once time because it slow if used many .ToList()
   foreach (var b in data)
   {
     var Customer = CustomerData.FirstOrDefault(f => f.CustomerCode==b.CustomerCode );
     if(CustomerName>!=null)
     {
       r.CustomerName = Customer.CustomerName; //loop add data CustomerName
     }
   }
 }
我不知道该怎么做。请帮帮我

如果加入其他数据库,如何在LINQ中排序

我不确定我是否理解你的代码,但是这个呢:

   var BillData = (from t1 in db2.Bill
                  select new {
                    BillCode = t1.Billcode,
                    CustomerCode = t1.Customer,
                    CustomerName = db1.Customer.FirstOrDefault(c => c.CustormerCode == t1.Customer)?.CustomerName
                  });

然后你在BillData中有对象保存CustomerName,你可以通过它来订购:

BillData.OrderBy(bd => bd.CustomerName);

如果您只是想从客户数据库中获取CustomerName并对其进行排序,这就是我要使用的。我使用了orderby降序,但你也可以使用OrderBy。

      public List<Customer> getLogsByCustomerName(string customername)
      {
          using (var dbentites = new CustomerEntities())
          {
            var result = (from res in dbentites.Customer.OrderByDescending(_ => _.CustomerName)
                          where res.CustomerName == customername
                          select res).ToList();
             return result.ToList();
        }
     }