比较批量变量最有效的方法? C#

时间:2011-02-07 04:36:30

标签: c# linq

我从MySql数据库获取客户数据的数据表和来自Web服务的客户对象。

我想比较数据表中的每个值和对象中的值,如果有一个字段不同,我想要执行某些任务。

我知道我可以从数据表中获取值:

string mCompanyName = row["Company Name"].ToString();
string mCreatedDate = row["Created Date"].Tostring();
//etc..

然后我从Web服务中获取值

string wsCompanyName = customer.companyName;
string wsCreatedDate = customer.createdDate;

大约有50个字段正在进行

if( mCompanyName != wsCompanyName & mCreatedDate != wsCreatedDate and so on..) (or similar)
{
    //Do something
}

似乎有点乏味而且不太好,所以我应该怎么做呢?有没有更好的方法将其放入列表并使用一些花哨的LINQ?

提前致谢。

3 个答案:

答案 0 :(得分:2)

对于这样的情况,我有时会把它们(“对象”)放在IEnumerable中(确保“排列”)并使用SequenceEqual扩展方法。它执行标准Equals()'并且“足够便宜以供我使用”。

例如:

var equal = (new object[] { row["A"], row["B"] })
    .SequenceEqual(new object[] { x.A, x.B });

当然,这需要LINQ。

答案 1 :(得分:1)

我将它们放入字典并以这种方式搜索:

Dictionary<string, string> mData = new Dictionary<string, string>();

mData.Add("Company Name", row["Company Name"].ToString());


Dictionary<string, string> wsData = new Dictionary<string, string>();

wsData.Add("Company Name", customer.CompanyName);

然后循环:

foreach (KeyValuePair<string, string> pair in mData)
{
    if (wsData[pair.Key] == pair.Value) 
    { 
        // Do something
    }
}

这样,对于mData中的每个条目(来自数据库的数据),它将在wsData中查找具有相同名称的条目。

我不会为每个数据创建单独的变量。它很难维护,也不会很好地扩展(许多复制和粘贴)。

答案 2 :(得分:0)

我认为这可能会对您有所帮助,但需要对其进行修改才能在您的场景中使用stackoverflow link