![](/img/trans.png)
[英]linq query to get dependent data in one connection using entity framework 6
[英]Linq query - conditional dependent columns from one table in .Net MVC Core 3.1, Entity Framework
數據庫表結構
我想達到什么目標?
到目前為止,這是我嘗試過的:
public class NotOkeyViewComponent : ViewComponent
{
private readonly DbContext _context;
public NotOkeyViewComponent(DbContext context)
{
_context = context;
}
public Tuple<int, Guid> getFormInfo()
{
var CustomerGuid = Guid.Parse((string)TempData["CustomerId"]);
var FormId = _context.Forms
.Where(t => t.CompanyId == CustomerGuid)
.Where(t => t.FormType.Contains("CustomerForm"))
.Select(t => t.Id)
.First();
TempData.Keep();
return new Tuple<int, Guid>(FormId, CustomerGuid);
}
public IViewComponentResult Invoke()
{
var FormTuple = getFormInfo();
var query = _context.Dbtables
.Where(x => x.RecStatus == 'A' &&
x.Form.Id == FormTuple.Item1 &&
x.Form.CompanyId == FormTuple.Item2) // Item2: CustomerGuid;
.Where(x => x.Column1.Equals(StatusEnum.Ei))
.Select(x => x.Column2)
.Where(x => x.Column3.Equals(StatusEnum.Ei))
.Select(x => x.Column4);
TempData.Keep();
List<Dbtable> model = query.ToList();
return View(model);
}
}
當我使用 Where 查詢時,這將返回 false 並且不會選擇任何列,這是我不想要的。 我仍然希望它檢查 Column3、Column5 和 Column7,並在條件滿足時從 Column4、Column6 和 Column8 中進行選擇。 如何使 Column1 僅依賴於 Column2 並且可以一次完成所有查詢?
// StatusEnum
public enum StatusEnum
{
[Display(Name ="Yes")]
Yes = 0,
[Display(Name = "No")]
No = 1,
[Display(Name = "Not Known")]
Not_Known = 2
}
此查詢可以通過條件運算符輕松完成。 您不需要Where
過濾記錄,但您需要從記錄中選擇適當的值。
_context.Dbtables
.Where(x => x.RecStatus == 'A' &&
x.Form.Id == FormTuple.Item1 &&
x.Form.CompanyId == FormTuple.Item2)
.Select(x =>
x.Column1 == StatusEnum.Yes ? x.Column2 :
x.Column3 == StatusEnum.Yes ? x.Column4 :
x.Column5 == StatusEnum.Yes ? x.Column6 :
x.Column7 == StatusEnum.Yes ? x.Column8 :
null
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.