创建一个函数两个比较两个数组-一个来自csv的数据,一个来自数据库的数据
本文关键字:一个 数据 两个 数据库 csv 比较 函数 创建 数组 | 更新日期: 2023-09-27 18:11:00
我试图创建一个函数,比较2个数组的结果。如果它们匹配,那么什么都不需要做。如果它们不匹配,则需要对SQL表(称为Products_Extension)执行UPDATE操作。
Array A意味着包含由用户上传的.csv文件中的每个产品配置文件的以逗号分隔的ItemsAssignedIDs列表(该字段在Products_Extension表中称为uidProducts)。数组B旨在包含来自数据库的每个产品配置文件的itemsassigneid的逗号分隔列表。这两个列表都通过ProfileID字段附加到产品概要文件。(我猜我需要清除数组B中的项目是A和B不匹配,用数组A中的项目填充数组B,然后相应地更新数据库)
我有两个函数,一个函数为数据库中的每个产品配置文件构建itemsassigneids列表,另一个函数从上传的.csv文件中获取所有itemsassigneids。但是我对如何将它们组合起来以便比较两个数组感到困惑。
为每个产品配置文件构建以逗号分隔的itemsassigneids列表的函数:
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文件中拆分以逗号分隔的itemsassigneids列表的函数:
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);
}
注意:请不要使用'as is'。做出相应的改变…!