2014-01-09 86 views
1

我有两个不同的数据库,它们在某些列中具有相同的属性。 我的存储库的目标是获取这些属性并进行比较。在ADO.NET中比较来自不同数据库的两个数据读取器

所以,我就是这么做的:

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

您是否期望两个列表中都存在相同的产品?如果是这样,是否有每个产品独有的标识符?

如果有一个唯一标识符可用,那么您正在寻找在两个列表(本例中包含全部外连接,包含每个列表中的所有记录)之间进行连接。

编辑: 假设我们使用的是产品的性能“密码条”,你可以使用如下代码下面来比较的东西:


    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 
    } 
    } 
+0

世界上没有唯一标识符。是的,这些产品存在于同一个列表中。 – gog

+0

你希望做什么比较呢? – Matt

+0

在流程工作流程中,产品在这两个第三部分数据库中同时添加,但有时数据已损坏且值不相同。所以我需要检查它并显示。 – gog

相关问题