使用列表AddRange时如何删除重复值? C#
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用列表AddRange时如何删除重复值? C#,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1773字,纯文字阅读大概需要3分钟。
内容图文
![使用列表AddRange时如何删除重复值? C#](/upload/InfoBanner/zyjiaocheng/667/d3598241e21345d3b07fc749e6e2093e.jpg)
我正在分析并制作Windows Service应用程序.
进行插入查询时,我使用List< SqlParameter>添加列.和AddRange.
在List< SqlParameter>中pmlist =新列表< SqlParameter>(键);行,其中包含{@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());
它将合并两个数组,并按参数名称分组,然后从每个组中选择第一项.
内容总结
以上是互联网集市为您收集整理的使用列表AddRange时如何删除重复值? C#全部内容,希望文章能够帮你解决使用列表AddRange时如何删除重复值? C#所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。