簡體   English   中英

創建一個函數,對兩個比較2個數組進行比較-一個數組包含來自csv的數據,一個數組包含來自數據庫的數據

[英]Create a function two compare 2 arrays - one with data from csv, one with data from database

我正在嘗試創建一個比較2個數組的結果的函數。 如果它們匹配,則無需執行任何操作。 如果它們不匹配,則需要對SQL表進行更新(稱為Products_Extension)。

數組A用於包含用戶上傳的.csv文件中每個產品概要文件的逗號分隔的ItemsAssignedID列表(此字段在Products_Extension表中稱為uidProducts)。 數組B旨在包含數據庫中每個產品資料的逗號分隔的ItemsAssignedID列表。 這兩個列表都通過ProfileID字段附加到產品資料。 (我猜想我需要清除數組B中的項目是A且B不匹配,用數組A中的項目填充數組B,然后相應地更新數據庫)

我有兩個函數,一個函數為數據庫中的每個產品概要文件構建ItemsAssignedID列表,另一個函數從上載的.csv文件獲取所有ItemsAssignedID。 但是我對如何合並它們感到困惑,以便可以比較兩個數組。

為每個產品資料建立以逗號分隔的ItemsAssignedID列表的函數:

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列表的函數:

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();
            }
        }
    }
}

據我了解,如果要匹配/不匹配,您想compare兩個arrays並執行一些操作?

請嘗試以下操作:

方法1

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:

 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);
 }

注意:請不要使用“原樣”。 進行相應的更改..!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM