2017-07-18 1 views
-1

J'ai 3 table
Tbl_City, Tbl_GroupCities, Tbl_CtrCar.
Je veux convertir cette requête SQL pour LINQ ou expression lambda en C#Convertir une requête SQL en expression LINQ ou lambda en C# et utiliser dans EF Core

declare @fk_group uniqueidentifier 
SELECT @fk_group= FK_Group 
FROM dbo.Tbl_User 
WHERE UserName='meysam' 

SELECT dbo.Tbl_City.ID_City, dbo.Tbl_City.Name_City,COUNT(dbo.Tbl_CtrCar.Cur_year) 
FROM dbo.Tbl_City 
INNER JOIN dbo.Tbl_CtrCar ON dbo.Tbl_City.ID_City = dbo.Tbl_CtrCar.FK_City 
WHERE ID_City IN (SELECT FK_City 
        FROM dbo.Tbl_GroupCities 
        WHERE Active=1 AND [email protected]_group) 
GROUP BY ID_City , Name_City 
+2

Qu'avez-vous essayé de le faire? Quel est le problème? –

+0

Je veux convertir cette requête en lambda. Je suis confus comment convertir cela, parce que j'ai joint et groupé par et imbriqué sélectionnez –

+1

Avez-vous cherché comment rejoindre et grouper par LINQ? –

Répondre

2

S'il vous plaît jeter un oeil here les fonctionnalités que vous avez dans votre requête ne sont pas encore mis en œuvre. GroupBy et je pense aussi subselects fera un

SELECT * FROM TableName 

Et dans la mémoire, il fera le groupe par ou même pour chaque ligne une nouvelle requête SQL.

Mieux vaut utiliser la méthode RawSql à cette fin.

Mais si vous voulez vraiment apprendre LINQ et convertir votre SQL jeter un oeil à LINQPad

0

Ce problème est done.i trouvé mon problème, je ne pas utiliser deux Comprendre et rejoindre un groupe par l'utilisation dans LINQ

i utiliser cette solution pour LINQ et exécuter

var model = _TblUser.SingleOrDefault(x => x.UserName == type.UserName); 

     var q = _TblGroupCities.Where(x => x.IdGroup == model.FkGroup && x.Active == true); 
     tblCityViewModel = new List<MohasebKhodro.ViewModels.TblCityViewModel>(); 

     var sample2 = 
      (from x in _TblCity 
      join a in _TblGroupCities on x.IdCity equals a.FkCity 
      where a.Active == true && a.IdGroup == model.FkGroup 
      select new 
      { 
       x.IdCity, 
       x.NameCity 
      }).ToList(); 


     foreach (var item in sample2) 
     { 
      var er = _TblCtrCar.Where(x => x.FkCity == item.IdCity).Max(x => x.CurYear); 
      tblCityViewModel.Add(new MohasebKhodro.ViewModels.TblCityViewModel 
      { 
       IdCity = item.IdCity, 
       NameCity = item.NameCity, 
       MaxCurrentYear = Convert.ToString(er) 
      }); 
     } 
+0

Comment puis-je ce Linq à Lambda Expresion? –

+0

Il est plein d'expressions lambda. Que pourriez-vous demander de plus? Si vous voulez prouver à votre manager ou à votre professeur que votre solution utilise LINQ, alors vous avez réussi. –