如何在不选择新实例的情况下将一个查询的结果加入到另一个查询的结果中?

时间:2018-01-29 20:54:36

标签: c# linq

我有一个类,它的数据来自两个不同的来源 - 一个是数据库,另一个是Web API。 数据库源为我提供了大部分数据,而Web API只提供了一些属性 我使用Dapper从数据库中获取数据,作为IEnumerable<MyClass>(其中来自Web API的属性都为空), 并且来自Web API的数据是IEnumerable<WebApiClass>

现在我需要将这两个结果加到一个IEnuemrable<MyClass> - 简单 -

var query = from c in dbResults
            join w in webResults on c.Id equals w.Id
            select new MyClass()
            {
                dbProp1 = c.dbProp1, dbProp2 = c.dbProp2, ...
                waProp1 = w.Prop1, waProp2 = w.Prop2, ...
            }

有没有办法在不选择new MyClass()的情况下执行此操作,只需使用MyClass中已有的dbResults实例?

我见过的所有联接查询都使用select new - 这真的是唯一的选择吗?

1 个答案:

答案 0 :(得分:1)

使用方法语法连接并显式打开resultSelector的范围。在其中根据需要编辑对象并将其返回。

var result = dbResults.Join(webResults, db => db.Id, web => web.Id
                            (db, web) => {
                                db.SomePropFromWeb = web.SomeProp;
                                return db;
                            });