我正在研究C#WPF和实体框架6中的一个小项目
我需要进行查询,其中table1中列ID的id等于表2中列ID的id。
任何可以帮助我的人?
亲切的问候
Cursus cursus = DWE.Cursus.Where(x => x.Naam == CurNaam).First();
TbNaam.Text = CurNaam;
TbOmschrijving.Text = cursus.Omschrijving;
CmbSelBoot.SelectedValue = cursus.BootID;
TbPrijs.Text = cursus.Prijs.ToString();
//the following 2 lines should get the data from the new cursusweek table
BeginDate.SelectedDate = Utils.UnixTimeStampToDateTime(Cursus.Begint);
Enddate.SelectedDate = Utils.UnixTimeStampToDateTime(cursus.Eindigt);
数据库概述:
你可以看到我想从Cursusweek获取数据。 我从Cursus获得了id,并且我想从Cursusweek表中获取正确的数据。
答案 0 :(得分:3)
这应该接近你所需要的:
var cursusWeek = Cursusweek
.Where(x => x.CursusId = cursus.CursusId)
.Select(x => new { Begint = x.Begint, Eindigt = x.Eindigt })
.ToList();
答案 1 :(得分:1)
根据您的需要,它可以是Forklift的答案或者这个:
var v = cursus.Cursusweeks.ToList();
答案 2 :(得分:1)
试试这个:
using(var db = YourDatabaseContext())
{
var result = (from cw in db.Cursusweek
join c in db.Cursus on cw.CursusID equals c.CursusID
where c.CursusID = your_value
select cw).ToList();
}
答案 3 :(得分:0)
第一个简单的解决方案是对ORM进行新的查询并获取您需要的信息,样本:
Cursus cursus = DWE.Cursus.FirstOrDefault(x => x.Naam == CurNaam);
if (cursus != null)
{
TbNaam.Text = CurNaam;
TbOmschrijving.Text = cursus.Omschrijving;
CmbSelBoot.SelectedValue = cursus.BootID;
TbPrijs.Text = cursus.Prijs.ToString();
var cursusWeek = DWE.CursusWeeks.FirstOrDefault(x => x.CursusId = cursus.CursusId);
if (cursusWeek != null)
{
BeginDate.SelectedDate = Utils.UnixTimeStampToDateTime(cursusWeek.Begint);
Enddate.SelectedDate = Utils.UnixTimeStampToDateTime(cursusWeek.Eindigt);
}
}
第二个选项,也是最好的选项,是进行查询以在主查询中包含CrsusWeek对象,并从cursus
对象中使用它。我不确定这个选项,因为我不知道你的整个模型。鉴于它是一对一的关系,可以是:
Cursus cursus = DWE.Cursus.Include(x => x.CursusWeek).FirstOrDefault(x => x.Naam == CurNaam);
if (cursus != null)
{
TbNaam.Text = CurNaam;
TbOmschrijving.Text = cursus.Omschrijving;
CmbSelBoot.SelectedValue = cursus.BootID;
TbPrijs.Text = cursus.Prijs.ToString();
var cursusWeek = cursus.CursusWeek;
if (cursusWeek != null)
{
BeginDate.SelectedDate = Utils.UnixTimeStampToDateTime(cursusWeek.Begint);
Enddate.SelectedDate = Utils.UnixTimeStampToDateTime(cursusWeek.Eindigt);
}
}
else
{
// show a message about Cursus not found here..
}
我还重构了你的代码。使用FirstOrDefault
可以避免空结果出现异常,并提供正确的行为(消息)。