Linq 2 表加入但需要来自 3 的数据不需要加入所有 3
Linq 2 tables join but need data from 3 not needing to join all 3
我有 3 个表我需要从井中获取数据实际上只有 2 个我需要做一个连接,我知道使用 Linq
但是我需要一个项目的名称从项目中我需要将其插入到我使用 linq 创建的同一模型中。我在 context.Projects 的 proj.ProjectId = detail.ProjectId
中尝试从项目开始,但它说不能将 int 转换为 bool 并且我没有在任何地方声明 bool ?这是我的 linq
。整个方法实际上
PS - 这是我创建的最新操作,但仍然不是 100% 正确,但是获取 3 个表数据的想法是否正确?
public ActionResult DisplayAllTimeSheetDetails(int masterid)
{
var masterModel = context.TimeSheetMaster.Where(w =>
w.TimeSheetMasterId.Equals(masterid)).FirstOrDefault();
var detailM = context.TimeSheetDetails.Where(t =>
t.TimeSheetMasterId.Equals(masterModel.TimeSheetMasterId))
.FirstOrDefault();
var project = context.Projects.Where(p => p.ProjectId.Equals(
detailM.ProjectId)).FirstOrDefault();
var details = (from master in context.TimeSheetMaster
join detail in context.TimeSheetDetails
on master.TimeSheetMasterId equals detail.TimeSheetMasterId
//from proj in context.Projects where proj.ProjectId = detail.ProjectId
select new TimeSheetDetailsModel()
{
Sunday = detail.Sunday,
Monday = detail.Monday,
Tuesday = detail.Tuesday,
Wednesday = detail.Wednesday,
Thursday = detail.Thursday,
Friday = detail.Friday,
Saturday = detail.Saturday,
Hours = detail.Hours,
Comment = master.Comment,
ProjectName = project.ProjectName
}).ToList();
return View(details);
}
public class TimeSheetDetailsModel
{
[Display(Name = "Time Sheet ID")]
public int TimeSheetId { get; set; }
[Display(Name = "Day of Week")]
public string DaysOfWeek { get; set; }
[Display(Name = "Hours")]
public int? Hours { get; set; }
[Display(Name = "Period")]
public string Period { get; set; }
[Display(Name = "Project ID")]
public int ProjectId { get; set; }
[Display(Name = "User ID")]
public string UserId { get; set; }
[Display(Name = "Date Created")]
public DateTime DateCreated { get; set; }
[Display(Name = "Time Sheet Master ID")]
public int TimeSheetMasterId { get; set; }
[Display(Name = "Project Name")]
public string ProjectName { get; set; }
public string Comment { get; set; }
public int Sunday { get; set; }
public int Monday { get; set; }
public int Tuesday { get; set; }
public int Wednesday { get; set; }
public int Thursday { get; set; }
public int Friday { get; set; }
public int Saturday { get; set; }
}
我是这样工作的。我对其他答案和更简洁的方法持开放态度。
public ActionResult DisplayAllTimeSheetDetails(int masterid)
{
var masterModel = context.TimeSheetMaster.Where(w =>
w.TimeSheetMasterId.Equals(masterid)).FirstOrDefault();
var detailM = context.TimeSheetDetails.Where(t =>
t.TimeSheetMasterId.Equals(masterModel.TimeSheetMasterId)).FirstOrDefault();//.ToList();
var project = context.Projects.Where(p => p.ProjectId==detailM.ProjectId).FirstOrDefault();
var details = (from master in context.TimeSheetMaster
join detail in context.TimeSheetDetails
on master.TimeSheetMasterId equals detail.TimeSheetMasterId
select new TimeSheetDetailsModel()
{
Sunday = detail.Sunday,
Monday = detail.Monday,
Tuesday = detail.Tuesday,
Wednesday = detail.Wednesday,
Thursday = detail.Thursday,
Friday = detail.Friday,
Saturday = detail.Saturday,
Hours = detail.Hours,
Comment = master.Comment,
ProjectName = project.ProjectName
}).FirstOrDefault();
return View(details);
}
我有 3 个表我需要从井中获取数据实际上只有 2 个我需要做一个连接,我知道使用 Linq
但是我需要一个项目的名称从项目中我需要将其插入到我使用 linq 创建的同一模型中。我在 context.Projects 的 proj.ProjectId = detail.ProjectId
中尝试从项目开始,但它说不能将 int 转换为 bool 并且我没有在任何地方声明 bool ?这是我的 linq
。整个方法实际上
PS - 这是我创建的最新操作,但仍然不是 100% 正确,但是获取 3 个表数据的想法是否正确?
public ActionResult DisplayAllTimeSheetDetails(int masterid)
{
var masterModel = context.TimeSheetMaster.Where(w =>
w.TimeSheetMasterId.Equals(masterid)).FirstOrDefault();
var detailM = context.TimeSheetDetails.Where(t =>
t.TimeSheetMasterId.Equals(masterModel.TimeSheetMasterId))
.FirstOrDefault();
var project = context.Projects.Where(p => p.ProjectId.Equals(
detailM.ProjectId)).FirstOrDefault();
var details = (from master in context.TimeSheetMaster
join detail in context.TimeSheetDetails
on master.TimeSheetMasterId equals detail.TimeSheetMasterId
//from proj in context.Projects where proj.ProjectId = detail.ProjectId
select new TimeSheetDetailsModel()
{
Sunday = detail.Sunday,
Monday = detail.Monday,
Tuesday = detail.Tuesday,
Wednesday = detail.Wednesday,
Thursday = detail.Thursday,
Friday = detail.Friday,
Saturday = detail.Saturday,
Hours = detail.Hours,
Comment = master.Comment,
ProjectName = project.ProjectName
}).ToList();
return View(details);
}
public class TimeSheetDetailsModel
{
[Display(Name = "Time Sheet ID")]
public int TimeSheetId { get; set; }
[Display(Name = "Day of Week")]
public string DaysOfWeek { get; set; }
[Display(Name = "Hours")]
public int? Hours { get; set; }
[Display(Name = "Period")]
public string Period { get; set; }
[Display(Name = "Project ID")]
public int ProjectId { get; set; }
[Display(Name = "User ID")]
public string UserId { get; set; }
[Display(Name = "Date Created")]
public DateTime DateCreated { get; set; }
[Display(Name = "Time Sheet Master ID")]
public int TimeSheetMasterId { get; set; }
[Display(Name = "Project Name")]
public string ProjectName { get; set; }
public string Comment { get; set; }
public int Sunday { get; set; }
public int Monday { get; set; }
public int Tuesday { get; set; }
public int Wednesday { get; set; }
public int Thursday { get; set; }
public int Friday { get; set; }
public int Saturday { get; set; }
}
我是这样工作的。我对其他答案和更简洁的方法持开放态度。
public ActionResult DisplayAllTimeSheetDetails(int masterid)
{
var masterModel = context.TimeSheetMaster.Where(w =>
w.TimeSheetMasterId.Equals(masterid)).FirstOrDefault();
var detailM = context.TimeSheetDetails.Where(t =>
t.TimeSheetMasterId.Equals(masterModel.TimeSheetMasterId)).FirstOrDefault();//.ToList();
var project = context.Projects.Where(p => p.ProjectId==detailM.ProjectId).FirstOrDefault();
var details = (from master in context.TimeSheetMaster
join detail in context.TimeSheetDetails
on master.TimeSheetMasterId equals detail.TimeSheetMasterId
select new TimeSheetDetailsModel()
{
Sunday = detail.Sunday,
Monday = detail.Monday,
Tuesday = detail.Tuesday,
Wednesday = detail.Wednesday,
Thursday = detail.Thursday,
Friday = detail.Friday,
Saturday = detail.Saturday,
Hours = detail.Hours,
Comment = master.Comment,
ProjectName = project.ProjectName
}).FirstOrDefault();
return View(details);
}