我有两个不同的对象列表,一个来自第三方API,另一个来自我的数据库 - 我试图将这两个关系链接起来。理想情况下,DBML与外键表(Customer.Orders
)创建关系的效果相似。关联两个列表LINQ扩展
来自第三方:
class ApiObject {
public string ID { get; set; }
public string Title { get; set; }
public DateTime CreatedDate { get; set; }
... 30 other properties ...
}
从我的数据库:
class DbmlObject {
public int ID { get; set; }
public string ApiID { get; set; }
public string OtherString { get; set; }
}
它们通过ApiObject.ID == DbmlObject.ApiID
有关我不想合并这些,不把它们加入到一些匿名对象(并明确列出30多个属性) - 而是使DbmlObject
成为的链接属性。即:可寻址为: apiObject.DbmlObjects.First().OtherString
或理想情况下,因为它是1对1的关系。
在控制器:
List<ApiObject> apiObjects = _thirdParty.GetObjects();
DbmlDataContext model = new DbmlDataContext();
List<DbmlObject> dbmlObjects = model.GetAllDbmlObjects();
// relate them here
foreach (var apiObject in apiObjects)
Console.Write(apiObject.DbmlObject.OtherString)
// NOTE: ideally this foreach loop should not make a DBML query on each iteration, just the single GetAllDbmlObjects query above.
它们是如何通过“ApiID”关联的? – 2012-07-17 20:25:55
@TimSchmelter by'ApiObject.ID == DbmlObject.ApiID',是我的猜测。 – 2012-07-17 20:27:11
是的,对不起,以为它很直观,但我会明确 – arserbin3 2012-07-17 20:28:36