首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建函数两个比较2数组-一个包含来自csv的数据,另一个包含来自数据库的数据

创建函数两个比较2数组-一个包含来自csv的数据,另一个包含来自数据库的数据
EN

Stack Overflow用户
提问于 2014-06-30 20:47:14
回答 1查看 89关注 0票数 0

我正在尝试创建一个函数来比较两个数组的结果。如果它们匹配,则不需要执行任何操作。如果它们不匹配,则需要对SQL表(称为Products_Extension)进行更新。

数组A用于包含用户上载的.csv文件中每个产品配置文件的ItemsAssignedID(此字段在Products_Extension表中称为uidProducts )的逗号分隔列表。数组B用于包含每个产品配置文件的数据库中以逗号分隔的ItemsAssignedID列表。这两个列表都通过ProfileID字段附加到产品配置文件。(我猜我需要清除数组B中的项是A和B不匹配,用数组A中的项填充数组B,然后相应地更新数据库)

我有两个函数,一个为数据库中的每个Product Profile构建一个ItemsAssignedID列表,另一个从上传的.csv文件中获取所有ItemsAssignedID。但我对如何组合它们以便比较两个数组感到困惑。

为每个产品配置文件构建ItemsAssignedID的逗号分隔列表的函数:

代码语言:javascript
复制
private string BuildItemsAssignedList(int ProfileID)
{
    string assignedIdList = "";

    string sqlQuery = "SELECT [uidProducts] FROM Products_Extension WHERE uidProductProfile = @ProfileID";
    using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
    {
        SqlCommand cmd = new SqlCommand(sqlQuery, cn);
        cmd.Parameters.Add(new SqlParameter("@ProfileID", ProfileID));
        cmd.CommandType = CommandType.Text;
        cn.Open();
        using (IDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                if (!String.IsNullOrEmpty(assignedIdList))
                    assignedIdList += ", ";
                assignedIdList += (reader["uidProducts"].ToString());
            }
            reader.Close();
        }
        cn.Close();
    }
    return assignedIdList = string.Join(",", assignedIdList);
}

从每个产品配置文件的.csv文件中拆分逗号分隔的ItemsAssignedID列表的函数:

代码语言:javascript
复制
private void SaveAssignedItems(int ProfileID, string[] row)
{
    string AssignedID = GetValue(row, (int)ProfileColumns.ItemsAssignedIDs);
    AssignedID = AssignedID.ToLower();
    AssignedID.Trim();

    if (AssignedID != "")
    {
        string[] assignedids = AssignedID.Split(',');

        foreach (string item in assignedids)
        {

            int MyVal = Convert.ToInt32(item);
            using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
            {
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = cn;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "UPDATE Products_Extension SET uidProductProfile = @ProfileID WHERE uidProducts=@AssignedID";
                cmd.Parameters.AddWithValue("@ProfileID", ProfileID);
                cmd.Parameters.AddWithValue("@AssignedID", item);
                cn.Open();
                cmd.ExecuteNonQuery();
                cn.Close();
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2014-06-30 21:08:11

据我所知,你想要匹配两个arrays,并在匹配/不匹配的情况下执行一些操作,对吗?

请尝试以下操作:

方法1

代码语言:javascript
复制
bool found= false;
int[] a = new int[] { 8, 1, 2, 3, 4 };
int[] b = new int[] { 5, 6, 7, 8 };
foreach (var numberA in a)
{
    foreach (var numberB in b)
    {
        if (numberA == numberB)
        {
            found= true;
        }

    }
    if(!found)
    {
          //numberA not found in array B
    }
}  

方法2:

代码语言:javascript
复制
 int[] a = new int[] { 1, 2, 3, 4 };
 int[] b = new int[] { 1, 2, 3 };
 var result = a.Except(b).ToArray();
 foreach (var item in result)
 {
    Response.Write("\nItems not in B are :"+item);
 }

注意:请不要使用‘原样’。做出相应的改变!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24490499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档