C# 首先查询EF代码中的两个继承类
我首先使用EF代码,我有两个从基类继承的类(C# 首先查询EF代码中的两个继承类,c#,linq,inheritance,ef-code-first,table-per-type,C#,Linq,Inheritance,Ef Code First,Table Per Type,我首先使用EF代码,我有两个从基类继承的类(TPT): 现在,我想创建一个查询,以在一个事务中获取其姓氏等于“SomeName”的所有人员s,以及其名称以“a”开头的所有组织s。 像这样的 IList<Party> GetParties(string name, string organizationName) { IList<Party> result = new List<Party>(); using(var context = new
TPT
):
现在,我想创建一个查询,以在一个事务中获取其姓氏等于“SomeName”的所有人员
s,以及其名称
以“a”开头的所有组织
s。
像这样的
IList<Party> GetParties(string name, string organizationName)
{
IList<Party> result = new List<Party>();
using(var context = new MyContext())
{
var persons = context.Parties.OfType<Person>().Where(t=>t.LastName = name) ;
var organizations = context.Parties.OfType<Organization>().Where(t=>t.Name.StartWith(organizationName));
//return merge of persons and organizations
}
}
IList GetParties(字符串名称、字符串组织名称)
{
IList结果=新列表();
使用(var context=new MyContext())
{
var persons=context.Parties.OfType(),其中(t=>t.LastName=name);
var organizations=context.Parties.OfType(),其中(t=>t.Name.StartWith(organizationName));
//返回个人和组织的合并
}
}
有什么方法可以做到这一点吗?你可以做到
context.Parties.OfType<Person>().Where(t=>t.LastName = name).OfType<Party>()
.Concat(context.Parties.OfType<Organization>()
.Where(t=>t.Name.StartWith(organizationName)))
context.Parties.OfType()。其中(t=>t.LastName=name)。OfType()
.Concat(context.Parties.of type())
.Where(t=>t.Name.StartWith(organizationName)))
您不必将第二个集合强制转换为方
,因为它与IQueryable
连接在一起,它与IQueryable协变,我做了一些LINQPad处理,我相信这就是您想要的结果
IList<Party> GetParties(string name, string organizationName)
{
IList<Party> result = new List<Party>();
using(var context = new MyContext())
{
var persons = context.Parties.OfType<Person>().Where(t=>t.LastName = name) ;
var organizations = context.Parties.OfType<Organization>().Where(t=>t.Name.StartWith(organizationName));
//return merge of persons and organizations
result = (IList<Party>)persons.Union((IEnumerable<Party>)organizations);
}
return result;
}
IList GetParties(字符串名称、字符串组织名称)
{
IList结果=新列表();
使用(var context=new MyContext())
{
var persons=context.Parties.OfType(),其中(t=>t.LastName=name);
var organizations=context.Parties.OfType(),其中(t=>t.Name.StartWith(organizationName));
//返回个人和组织的合并
结果=(IList)个人。工会((IEnumerable)组织);
}
返回结果;
}
IList<Party> GetParties(string name, string organizationName)
{
IList<Party> result = new List<Party>();
using(var context = new MyContext())
{
var persons = context.Parties.OfType<Person>().Where(t=>t.LastName = name) ;
var organizations = context.Parties.OfType<Organization>().Where(t=>t.Name.StartWith(organizationName));
//return merge of persons and organizations
result = (IList<Party>)persons.Union((IEnumerable<Party>)organizations);
}
return result;
}