C# EF 6从没有导航属性的其他表中选择
我有一个小问题需要帮助解决: 我有以下情况: 例如:我想选择所有有狗的学生 我有两张桌子:C# EF 6从没有导航属性的其他表中选择,c#,sql,entity-framework,linq-to-sql,C#,Sql,Entity Framework,Linq To Sql,我有一个小问题需要帮助解决: 我有以下情况: 例如:我想选择所有有狗的学生 我有两张桌子: students id name petid pet id name 但是它们之间没有指定的外键没有导航属性,虽然我已经指定了,但我还没有指定它,我不想使用我的示例,但我仍然希望生成正确的select语句 因此,使用导航属性,我可以如下查询: var students = (student s in context.students where s.Pet.Name.Equals("dog").T
students
id name petid
pet
id name
但是它们之间没有指定的外键没有导航属性,虽然我已经指定了,但我还没有指定它,我不想使用我的示例,但我仍然希望生成正确的select语句
因此,使用导航属性,我可以如下查询:
var students = (student s in context.students where s.Pet.Name.Equals("dog").ToList();
我也会避免这样做
var students = context.students
foreach(student s in students)
{
string pet = (from pet p in context.pets where p.Id==s.PetId select p.name).SingleOrDefault();
if(pet=="dog")
{
//do something
}
}
当然,创建导航属性很容易,但就我而言,我真的不想这样做
因此,我的问题是,如何简单地执行这种查询,并且只使用一个to DB?使用连接
var students = (from s in context.students
join p in context.pets on s.petid equals p.id
where p.name == "dog"
select s).ToList();
对于lambda语法,您可以使用:
var students = context.students.Join(context.pets.Where(p => p.name== "dog"), //filter the pets
student => student.PetId, //left side key for the join
pet => pet.id, //right side key for the join
(student, pet) => student); //what do you want to select
我将对它进行测试,但只是想知道如果我使用这种类型的编写查询:context.studnets.Where().Where().Select()。。。如何在这里使用join?context.students.Where().Join(…)如何在这里用lambda编写连接?下面是一个使用Lamda的示例,我从来都不喜欢连接的lambda语法。它的可读性差,IMHO。制作导航属性并不容易,如果有人需要,请参阅