You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LINQ实现将关联查询结果映射到ObjView类实例

如何用LINQ关联A和B并创建ObjView实例?

我想了解如何使用LINQ实现以下需求:首先定义类ObjView,代码如下:

public class ObjView { 
    public A aObj { get; set; } 
    Public B bObj { get; set; } 
}

期望编写关联查询,将A与B通过B_Id关联后,创建ObjView实例并为其成员赋值,我写的目标查询示例如下,但不确定是否正确:

var query = from a in A 
            join b in B on a.B_Id equals b.B_Id 
            select new ObjView(){ 
                aObject.Item1 = a.Item1, 
                aObject.Item2 = a.Item2, 
                bObject.Item1 = b.Item1, 
                bObject.Item2 = b.Item2, 
            };

嗨,我来帮你梳理正确的实现方式!首先先修正两个小问题:

  1. 你的ObjView类里Public是大写的,C#中访问修饰符关键字需要小写为public;
  2. 你示例里的aObject、bObject是笔误,应该对应类里的aObj、bObj属性。

第一步:修正ObjView类定义

public class ObjView
{
    public A aObj { get; set; }
    public B bObj { get; set; }
}

第二步:正确的LINQ关联查询

你原来的写法错误在于直接给aObj.Item1赋值,但aObj本身是A类型的对象,需要先实例化A和B的对象,再赋值给ObjView的对应属性。这里提供两种常见的LINQ写法:

方式一:查询表达式语法(和你原来的写法风格一致)

var query = from a in ACollection  // 注意这里A、B应该是你的数据源集合,比如List<A>、IQueryable<A>
            join b in BCollection on a.B_Id equals b.B_Id
            select new ObjView()
            {
                aObj = new A()
                {
                    Item1 = a.Item1,
                    Item2 = a.Item2
                },
                bObj = new B()
                {
                    Item1 = b.Item1,
                    Item2 = b.Item2
                }
            };

方式二:方法链语法(另一种常用的LINQ写法)

var query = ACollection.Join(
    BCollection,
    a => a.B_Id,
    b => b.B_Id,
    (a, b) => new ObjView()
    {
        aObj = new A { Item1 = a.Item1, Item2 = a.Item2 },
        bObj = new B { Item1 = b.Item1, Item2 = b.Item2 }
    });

补充说明

  • 确保A和B类确实包含Item1、Item2、B_Id这些属性;
  • 如果你不需要创建新的A、B实例,而是直接引用关联后的原对象,那可以简化为:
    var query = from a in ACollection
                join b in BCollection on a.B_Id equals b.B_Id
                select new ObjView()
                {
                    aObj = a,
                    bObj = b
                };
    
    这种写法会直接把关联后的a和b对象赋值给ObjView的属性,适合不需要复制属性值,直接引用原对象的场景。

内容的提问来源于stack exchange,提问作者codegrid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:00:25