C# 使用LINQ to SQL选择人员及其所有专业
我有一个指向C# 使用LINQ to SQL选择人员及其所有专业,c#,linq,C#,Linq,我有一个指向Persons表的主键列表 List<string> personKeys; 我想传入personKeys列表并查询数据库,得到每个人及其专业的列表或词典。 我写这个问题有困难 var personAndSpecialties = (from ps in this.context.PersonSpecialties where personKeys.Contains(ps.Person_K) select WHAT? ) 你试过使用吗 我现在没有要测试的SQ
Persons
表的主键列表
List<string> personKeys;
我想传入personKeys列表并查询数据库,得到每个人及其专业的列表或词典。
我写这个问题有困难
var personAndSpecialties = (from ps in this.context.PersonSpecialties
where personKeys.Contains(ps.Person_K) select WHAT? )
你试过使用吗
我现在没有要测试的SQL,但这可能会起作用。您尝试使用了吗
我现在没有SQL要测试,但这可能会起作用。我想您需要的是:
var personAndSpecialties = (
from p in this.Context.Person
join ps in PersonSpecialties on p.Person_K equals ps.Person_K into joined
from ps in joined.DefaultIfEmpty()
where personKeys.Contains(p.Person_K) select p, psd );
我想你想要的是:
var personAndSpecialties = (
from p in this.Context.Person
join ps in PersonSpecialties on p.Person_K equals ps.Person_K into joined
from ps in joined.DefaultIfEmpty()
where personKeys.Contains(p.Person_K) select p, psd );
您可以创建另一个名为PersonSpecialtyViewModel的类
public class PersonSpecialtyViewModel
{
public Person Person {get; set;}
public SpecialtyName SpecialtyName {get; set;}
}
你可能是这样的
var personAndSpecialties = (from ps in this.context.PersonSpecialties
where personKeys.Contains(ps.Person_K) select new PersonSpecialtyViewModel() { Person = ps.Person, SpecialtyName = ps.SpecialtyName }).ToList();
您可以创建另一个名为PersonSpecialtyViewModel的类
public class PersonSpecialtyViewModel
{
public Person Person {get; set;}
public SpecialtyName SpecialtyName {get; set;}
}
你可能是这样的
var personAndSpecialties = (from ps in this.context.PersonSpecialties
where personKeys.Contains(ps.Person_K) select new PersonSpecialtyViewModel() { Person = ps.Person, SpecialtyName = ps.SpecialtyName }).ToList();
所以你想:
字典
对吧?@CodingGorilla是的,类似的,所以我可以在后面循环,然后说ok这个人,这些特长,等等..选择什么代码>选择具有适当属性的匿名类型。然后,如果你有一个CLR类型,你可以将它映射到你的CLR类型。@HamletHakobyan但是当一个人有多个专长时会发生什么呢?我在这一部分感到困惑。然后你的匿名类型中可以有两个属性-Person类型的Person和LIst类型的PersonSpecialities。那么你想要:字典
对吗?@CodingGorilla是的,类似的,所以稍后我可以循环通过它们说ok这个人,这些专业,等等。选择什么代码>选择具有适当属性的匿名类型。然后,如果你有一个CLR类型,你可以将它映射到你的CLR类型。@HamletHakobyan但是当一个人有多个专长时会发生什么呢?我在这一部分感到困惑。那么你的匿名类型中可以有两个属性-Person类型的Person和LIst类型的PersonSpecialities。好吧,如果这个人有三个专长,我的类列表中将有三个东西?比如(P1,放射学),(P1,牙科),(P1,皮肤护理)公共特殊名称{get;set;}?这里的数据类型是什么?哦,对不起,我更正了我的答案。是的,就像你说的,一个人有3个专业,你会得到一个包含3个元素的集合,所以如果这个人有3个专业,我会在我的课程列表中有3样东西?比如(P1,放射学),(P1,牙科),(P1,皮肤护理)公共特殊名称{get;set;}?这里的数据类型是什么?哦,对不起,我更正了我的答案。是的,就像你所说的,对于一个有3个专长的人,你会得到一个包含3个元素的集合