Nasıl iki kez seçmek yazmak zorunda kalmadan Linq sorguda .Select içinde bir yöntemi çağırmak için?

oy
1

şu işleri benim kodudur. Ama ben iki kere seçmek yazmaya yaşıyorum gördüğünüz gibi

var lstCargoRequestVM = 
(from c in db.Cargo
 join v in db.Vehicles on c.VehicleID equals v.VehicleID
 join cmp in db.Companies on c.CompanyID equals cmp.CompanyID
 where c.Isdeleted == false && c.IsActive == true
 select new CargoRequestVM
 {
     CargoId = c.CargoID,
     CompanyName = cmp.CompanyName,
     VehicleNo = v.VehicleNo,
     Date = c.DateOfPassage,
     Type = c.Type.ToString()                                       

 })
 .AsEnumerable()
 .Select(x => new CargoRequestVM
 {
     CargoId = x.CargoId,
     CompanyName = x.CompanyName,
     VehicleNo = x.VehicleNo,
     Date = x.Date,
     Type = CargoElements.CargoTypeName(x.Type.ToString())                                              
 }).ToList();

iki kez seçmek yazmak zorunda kalmadan aynı şeyi mümkün mü? Belirli durumlarda bir düzine özelliklerinden daha var olabilir. Benim kod gereksiz yere uzun yapmak istemiyoruz.

Oluştur 08/11/2018 saat 11:28
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
1

Muhtemelen bu temel veritabanını bir çeviri olmazdı ve böylece iki kez temelde yazmak gerekir. nerede gibi yöntem sözdizimi kullandıktan sonra () AsEnumerable başvurabilir Ancak (aslında sizi varsayarak iyi bir ilişkisel şema tanımlanmış ve seyir özelliklerinin ayarlanmış olması - Linq çok nadiren anahtar kelime katılmak gerekir):

stVM = db.Cargo
         .Include( c => c.Vehicle )
         .Include( c => c.Company )
       .Where( c => !c.Isdeleted && c.IsActive )
       .AsEnumerable()
       .Select( c => new CargoRequestVM
       {
         CargoId = c.CargoID,
         CompanyName = c.Company.CompanyName,
         VehicleNo = c.Vehicle.VehicleNo,
         Date = c.DateOfPassage,
         Type = CargoElements.CargoTypeName(c.Type.ToString())                                       
       }).ToList();
Cevap 08/11/2018 saat 11:43
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more