我有以下 DTO:
public int IdTableOne { get; set; }
public string ValueTableOne { get; set; }
public int IdTableTwo { get; set; }
public string ValueTableTwo { get; set; }
另外,我有兩個模型(TableOne 和 TableTwo),我在我的存盤庫中填充了這個模型,執行以下代碼:
return dbContext.TableOne;
此時一切正常。TableOne 和 TableTwo 已填充,但現在我想將這些值的組合回傳到我的 DTO 物件(TableOneId 等于 TableTwoId,這是兩個表之間的關系)為此我正在嘗試這樣的事情:
public IEnumerable<TableOneAndTwoDTO> GetTableOneAndTwo()
{
List<TableOneAndTwoDTO> combination = new List<TableOneAndTwoDto>();
var t1 = myRepository.GetTableOne();
var t2 = myRepository.GetTableTwo();
var query = from p in t1
select new {
IdTableOne = p.Id,
ValueTableOne = p.Value,
};
foreach (var item in query)
{
combination.Add(new TableOneAndTwoDTO { IdTableOne = item.IdTableOne, ValueTableOne = item.ValueTableOne });
}
}
所以我的問題是,只有當 IdTableOne = IdTableTwo 時,我如何才能將 TableTwo 值添加到我的 DTO。
uj5u.com熱心網友回復:
你可以加入你的表格結果。像這樣的東西:
var query = from p in t1
join j in t2 on p.IdTableOne equals j.IdTableTwo
select new { p, j };
然后您可以使用如下方式將連接值添加到您的 DTO:
foreach (var item in query)
{
combination.Add(new TableOnwAndTwoDTO { IdTableOne = item.p.IdTableOne, IdTableTwo = item.j.IdTableTwo... })
}
uj5u.com熱心網友回復:
只需執行 LINQ Join。通過將整個事情放入一個查詢中,然后.ToList()在回傳之前呼叫,您可以避免原始代碼中的很多儀式。
public IEnumerable<TableOneAndTwoDTO> GetTableOneAndTwo()
{
var t1 = myRepository.GetTableOne();
var t2 = myRepository.GetTableTwo();
var combination =
from p in t1
join j in t2 on p.IdTableOne equals j.IdTableTwo
select new {
IdTableOne = p.Id,
ValueTableOne = p.Value,
IdTableTwo = j.Id,
ValueTableTwo = j.Value,
};
return combination.ToList();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/360035.html
標籤:C# 林克 实体框架核心 asp.net-core-webapi
下一篇:EFCore多對多查詢連接3個表
