gpt4 book ai didi

c# - 使用列表 AddRange 时如何删除重复值? C#

转载 作者:行者123 更新时间:2023-11-30 15:59:03 28 4
gpt4 key购买 nike

我正在分析和制作 Windows 服务应用程序。

当我进行插入查询时,我使用 List<SqlParameter> 添加列和添加范围。

List<SqlParameter> pmlist = new List<SqlParameter>(keys);行,它包含 {@DeptCode}。

然后 pmlist.AddRange(pms);行,添加了pms参数。

我前面提到的总线 pmslist 已经有 {@DeptCode} , 所以 pmlist 有这样的值

 pmlist = [0] {@DeptCode} [1] {@DeptCode} [2] {@DeptName}  
[3] {@ParentDeptName} [4] {@ParentDeptCode} [5] {@DeptLevel}

DeptCode 重复。因此,它尝试向 ShadowDeptTable 插入查询,

它也有5列,发生了Sql Exception。

如何删除或不获取重复值?请帮助我...

代码如下。

//table : ShadowDeptTable ,  keys = {@DeptCode}, 
//pms = [0] {@DeptCode} [1] {@DeptName} [2] {@ParentDeptName}
// [3] {@ParentDeptCode} [4] {@DeptLevel}

public static int InsertOrUpdate(string table, SqlParameter[] keys, params SqlParameter[] pms)
{
int st = 0;
string constr = Util.GetPropVal(Words.PropConnectionString);
var obj = SqlHelper.ExecuteScalar(constr,CommandType.Text,sb.ToString(),keys);
StringBuilder sb=new StringBuilder();
sb = sb.Append("insert into " + table + "(");
//columns
string cols = null;
//values
string vals = null;
List<SqlParameter> pmlist = new List<SqlParameter>(keys);
pmlist.AddRange(pms);
cols = string.Join(",", pmlist.Select(a => "["+a.ParameterName.Substring(1, a.ParameterName.Length-1)+"]"));
vals = string.Join(",", pmlist.Select(a => "'" + a.Value + "'"));
sb = sb.Append(cols);
sb = sb.Append(") values(");
sb = sb.Append(vals);
sb = sb.Append(")");
obj = SqlHelper.ExecuteScalar(constr, CommandType.Text, sb.ToString());
return Convert.ToInt32(obj);
}

最佳答案

我没有深入研究您的代码。假设我们只是在谈论删除重复项。

如果你想通过参数名称删除重复项,也许你可以试试这个:

var merged = keys.Union(pms).GroupBy(p => p.ParameterName).Select(e => e.First());

它将合并两个数组,按参数名称分组,然后从每个组中选择第一个项目。

关于c# - 使用列表 AddRange 时如何删除重复值? C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42288605/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com