我有一个类,它的数据来自两个不同的来源 - 一个是数据库,另一个是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
- 这真的是唯一的选择吗?
答案 0 :(得分:1)
使用方法语法连接并显式打开resultSelector
的范围。在其中根据需要编辑对象并将其返回。
var result = dbResults.Join(webResults, db => db.Id, web => web.Id
(db, web) => {
db.SomePropFromWeb = web.SomeProp;
return db;
});