gpt4 book ai didi

c# - 在 LINQ 中 JOIN 之后选择所有列

转载 作者:可可西里 更新时间:2023-11-01 09:08:18 26 4
gpt4 key购买 nike

我有两个表,Table1Table2 .我想执行左外连接:

var myOutput = from object1 in Table1
join object2 in Table2
on object1.Property1 equals object2.Property2 into Table3
from output in Table3.DefaultIfEmpty()
select new
{
object1.Property1,
object1.Property2,
//...
output.Property3,
output.Property4,
//...
};

正如您所注意到的,我想从结果表中选择两个对象的所有属性(连接时考虑的枚举包含某些类型的对象 - 这些对于两个关系都是不同的)。当然,我可以在匿名选择中选择属性,如示例所示。

我的问题是如何避免手动指定所有属性?我想要类似 SELECT * FROM TABLE3 的东西, 其中TABLE3是结果关系(加入 TABLE1TABLE2 之后)。

提前感谢您提供的线索。

最佳答案

如果要投影到扁平类型中,则必须手动指定每个。您的另一个选择是让您的组合类型包含两个对象,并且这些对象自然会带来它们的属性。

select new 
{
Object1 = object1,
Object2 = output
};

您可以像 myObj.Object1.Property1myObj.Object2.Property4 等一样使用它

仍然涉及一些手动工作的最后一个选项是定义一个适当的类型,并使用一个构造函数或一个构建器方法来完成将对象属性分割成扁平化类型的工作。您仍然执行手动映射,但将其与查询逻辑隔离。

select new CombinedType(object1, output);
//or
select builder.GetCombinedType(object1, output);

关于c# - 在 LINQ 中 JOIN 之后选择所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7861059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com