[英]Converting Linq Expression to C# EF
我到這兩天了。 我不太擅長使用Linq表達式,因此請原諒簡單性。 我有兩個相關的表,在TSQL中編寫聯接很容易,但是我使用的是Entity Framework和Linq。
我通過閱讀文章和教程在LINQPad中破解了一個查詢,最終它返回了我想要的結果。
現在,我需要幫助將其轉換為C#代碼。 我在Google的翻譯器網站上找到了很多SQL到Linq,但是卻找不到我正在做的事情。。。很可能是因為我什至不知道我使用的是正確的搜索詞。
我的LINQPad代碼是這樣的:
DashboardNavigations
.OrderBy(x => x.Id)
.Select(x => new
{
x.Id,
x.Name,
x.Description,
x.ImageUrl,
SubDash = SubDashNavs
.Where(s => s.DashId == x.Id)
.Select(y => new { y.Id, y.Name, y.Description })
})
我習慣將SIMPLE Linq表達式編寫為這樣的實體框架:
var query = _mlsDashboardNavRepository.Table;
query = query.OrderBy(c => c.Id);
var dashnav = query.ToList();
如您所見,我返回了主記錄,但無法正確獲得聯接。
我需要幫助的是將代碼從LINQPad轉換為C#/ EF / LINQ到SQL .... ????
如評論中所述,我建議您_mlsDashboardNavRepository僅引用DashboardNavigations
因為您說僅使用_mlsDashboardNavRepository.Tables
來檢索主記錄; 您的DashboardNavigations參考在哪里? 要執行查詢,您需要一個引用(所有)數據庫表的上下文。 下面是使用數據庫上下文,這可能如果你使用SQL語法,你會更容易在LINQ格式的代碼。
var query = (from d in context.DashboardNavigations
join s in context.SubDashNavs on d.Id equals s.Id
orderby d.Id ascending
select new
{
d.Id,
d.Name,
d.Description,
d.ImageUrl,
SubDash = s
});
var dashNavs = query.ToList();
因此,我在這里將其發布給其他任何人。 這不是我的OP的一部分,NLindbom對OP有了答案,因此他獲得了榮譽。 但是,在弄清楚查詢之后,我想對其進行投影。
我的模型類基本上是這樣的:
public class DashboardNavigation()
{
public int Id {get; set;}
public string Name {get; set;}
.....etc.....
public List<SubNav> SubDashNav {get; set;}
}
public class SubNav()
{
....properties....
}
並且此LINQ將記錄正確投影到對象中。
var query = _mlsDashboardNavRepository.Table
.OrderBy(x => x.Id)
.Select(x => new
{
Id = x.Id,
Name = x.Name,
Description = x.Description,
ImageUrl = x.ImageUrl,
SubDashNav = _mlsSubDashNav.Table
.Where(s => s.DashId == x.Id)
}).ToList().Select(q => new MLS_DashboardNavigation()
{
Id = q.Id,
Name = q.Name,
Description = q.Description,
ImageUrl = q.ImageUrl,
SubDashNav = q.SubDashNav.ToList()
}).ToList();
return query;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.