2017-07-18 61 views
-1

我有3個表
Tbl_City,Tbl_GroupCities,Tbl_CtrCar。
我想這個SQL查詢LINQ或lambda表達式轉換成C#將SQL查詢轉換爲C#中的LINQ或lambda表達式並在EF核心中使用

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

你嘗試過什麼呢?問題是什麼? –

+0

我想將此查詢轉換爲lambda。我很困惑如何轉換這個,因爲我有加入和分組和嵌套選擇 –

+1

您是否在尋找如何加入和按LINQ分組? –

回答

2

請看看here你在你的查詢尚未實現的功能。 GroupBy並且我認爲子查詢也會執行

SELECT * FROM TableName 

而在內存中,它將通過或者甚至爲每行創建一個新的SQL查詢。

爲此更好地使用RawSql方法。

但是,如果你真的想學習LINQ和轉換您的SQL來看看LINQPad

0

這個問題done.i發現我的問題,我不理解使用兩個連接和使用GROUP BY Linq中

我使用LINQ的解決方案和運行

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

我如何可以Linq到Lambda Expresion? –

+0

它充滿了lambda表達式。你還能問什麼?如果你想向你的經理或老師證明你的解決方案使用了LINQ,那麼你就成功了。 –