我有两个不同的数据库,在某些列中具有相同的属性。 我的存储库的目标是获取这些属性并进行比较。
所以我这样做了:
public sealed class Product
{
public string BarCode{ get; set; }
public string CreationDate{ get; set; }
public string Modifier{ get; set; }
public string Status { get; set; }
}
public IEnumerable<Product> GetProductsDB1()
{
// ADO.NET stuff using DataReader returning a Product List from DB1
}
public IEnumerable<Product> GetProductsDB2()
{
// ADO.NET stuff using DataReader returning a Product List from DB2
}
public IEnumerable<Product> Compare()
{
var db2 = GetProductsDB2()
var db1 = GetProductsDB1()
//Comparing both lists here and returning the result list to display in GridView
}
我不确定这是否是最佳方法。我想有任何建议使用正确的概念来做到这一点。因为这种比较是痛苦的,我有超过30个对象可以做同样的事情。
感谢。
答案 0 :(得分:0)
您是否希望两个列表中都存在相同的产品?如果是这样,每种产品都有唯一的标识符吗?
如果有可用的唯一标识符,您希望在两个列表之间进行连接(在这种情况下为完整外连接,包含每个列表中的所有记录)。
编辑: 假设我们使用产品的“CodeBar”属性,您可以使用以下代码来比较:
var tJoined = db1.Join(db2,
list1Product => list1Product.CodeBar,
list2Product => list2Product.CodeBar,
(list1Product, list2Product) => new { Product1 = list1Product, Product2 = list2Product }
);
foreach(var tProductComparision in tJoined) {
if(tProductComparison.Product1.PropertyOfInterest != tProductComparison.Product2.PropertyOfInterest) {
//do something here
}
}