Linq 选择继承类的所有字段和派生类的某些字段
本文关键字:字段 派生 选择 继承 Linq | 更新日期: 2023-09-27 18:36:39
我有A
类,B
如下:
class A
{
public int a;
public int b;
public int c;
public int d;
public int e;
public int f;
}
class B: A{
public int g;
}
现在我想选择 从 A
类型的表中,我应该写下所有字段,例如:
B[] b;
using(DBContext db = new DBContext(){
b = db.A.Select(x=> new B{
a = a,
b = b,
c = c,
d = d,
f = f,
e = e,
g = somevalue,
});
}
或者有没有办法说选择类A
的所有字段+字段g
?
你的代码描述有点不准确,因此很难找出你真正想要的东西。
从您的示例中,我假设您的 DbContext 具有类型 A 的 DbSet:
public class MyDbcontext : DbContext
{
public DbSet<A> A {get; set;}
...
}
并且您希望使用可以从DbContext和someValue中的实体获得的A数据构造一个B。
您如何从 DbContext 中检索 A 数据的示例不起作用,我无法理解您想要如何搜索:通过 Id? 通过 A 中的一个字段检索?。为了克服这一点。假设您有一个过程可以从 A 实体表中的正确行中获取数据:
public A GetTheAThatIWant(...);
public int GetMyG(...);
现在构造 B 的巧妙方法是通过一个特殊的构造函数
public B(A, int g)
{
// fairly straightforward code
}
或
public B(parametersToFetchA, parametersToFecthG)
{
A a = GetTheAThatIWant(parametersToFetchA);
int g = GetMyG(parametersToFetchG);
// rest is fairly straightforward
}