string[]保留相同元素的一个元素

智者知已应修善业 2012-06-21 06:46:29
string[] 啊=new string[]{"额","发","日","个","额","个","和","可","你","和","才","小","发","和"};
...全文
175 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢楼上热心,借帖了还有建议。
那好吧,就把我收集到一些相关的和自己想出来已经实现的也发布出来在一起,也方便为找的人。
其实,我主要就是为了实现分开重复和不重复的。
/*string[] 啊=new string[]{"额","发","日","个","额","个","和","可","你","和","才","小","发","和"};
string[] 板 = 移数组重复元素(啊);
<summary>
移数组重复元素
</summary>
public string[] 移数组重复元素(string[] 数组)
{
List<string> 单元素 = new List<string>();
foreach (string 元素 in 数组)
{
if (!string.IsNullOrEmpty(元素) && !单元素.Contains(元素))
{ 单元素.Add(元素); }
}
return 单元素.ToArray();
}
string[] 阿阿 = 啊.Distinct().ToArray();
HashSet<string> 移数组重复 = new HashSet<string>(啊);
string[] 阿阿阿 = 移数组重复.ToArray();
List<string> 不复元素 = new List<string>(), 复元素 = new List<string>();
//Dictionary<string, int> 键值集 = new Dictionary<string, int>();
foreach (string 元素 in 啊)
{
//if (键值集.ContainsKey(元素))
// 键值集[元素] = 键值集[元素] + 1;
//else
// 键值集.Add(元素, 1);
if (!不复元素.Contains(元素)) 不复元素.Add(元素);
else 复元素.Add(元素);
}
string[] 啊啊 = 复元素.Distinct().ToArray();
string[] 元素交集 = 不复元素.Except(模板).ToArray();
foreach (string 元素 in 啊)
{
if (!string.IsNullOrEmpty(元素) && !不复元素.Contains(元素)) 不复元素.Add(元素);
else if (!string.IsNullOrEmpty(元素) && !复元素.Contains(元素)) 复元素.Add(元素);
}*/
最终采纳9楼的写法,不过之前没接触过linq,所以,就算找到相关资料也看不到,后来找到linq看了看,并修改9楼写法实现。
string[] ay=new string[]{"额","发","日","个","额","个","和","可","你","和","才","小","发","和"};
ay = ay.GroupBy(a=>a).Where(g=>g.Count()==1 && g.Key != "").Select(g=>g.Key).ToArray();//得到不重复且不等空元素
ay = ay.GroupBy(a=>a).Where(g=>g.Count()>1).Select(g=>g.Key).ToArray();//得到重复元素
william_wz 2012-06-22
  • 打赏
  • 举报
回复
数据库语句筛选试试
wanghui0380 2012-06-21
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
引用 9 楼 的回复:

string[] ay=new string[]{"额","发","日","个","额","个","和","可","你","和","才","小","发","和"};
ay = ay.GroupBy(a=>a).Where(g=>g.Count()>1).Select(g=>g.Key).ToArray();

对的,能解释下?
[/Quote]

这个不怎么需要解释,你把他翻译成sql就是

select key from xx where count(key)>1 group by key

也就是分组统计数量

只不过这里不是数据库,而是使用linq直接查询内存里的list列表
  • 打赏
  • 举报
回复
哈哈,不是我没写清楚,不知道你们怎么看的。12楼也很好。
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

string[] ay=new string[]{"额","发","日","个","额","个","和","可","你","和","才","小","发","和"};
ay = ay.GroupBy(a=>a).Where(g=>g.Count()>1).Select(g=>g.Key).ToArray();
[/Quote]
对的,能解释下?
__天涯寻梦 2012-06-21
  • 打赏
  • 举报
回复
string[] 啊 = new string[] { "额", "发", "日", "个", "额", "个", "和", "可", "你", "和", "才", "小", "发", "和" };
var list1 = new List<string>();
var list2 = new List<string>();
foreach (var item in 啊)
{
if (!list1.Contains(item))
{
list1.Add(item);
}
else if (!list2.Contains(item))
{
list2.Add(item);
}
}
string[] result = list2.ToArray();
q107770540 2012-06-21
  • 打赏
  • 举报
回复
擦。。从头看到尾才知道楼主真正想问什么
  • 打赏
  • 举报
回复
声明:不是查询数据库,就这个数组提取的。
[Quote=引用 6 楼 的回复:]

引用 3 楼 的回复:

怎么掉了一个
C# code

string[] 啊啊啊 = 啊.Distinct().ToArray();

++
[/Quote]
我找的资料比你们上面 去重复元素 的还多呢。
q107770540 2012-06-21
  • 打赏
  • 举报
回复
string[] ay=new string[]{"额","发","日","个","额","个","和","可","你","和","才","小","发","和"};
ay = ay.GroupBy(a=>a).Where(g=>g.Count()>1).Select(g=>g.Key).ToArray();
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

linq
gruopby count

其实你用sql想一下就ok,在sql下你怎么玩,还是一样玩计算分组count >1的东西就成
[/Quote]
不懂,知道就不问了。

*_*
wanghui0380 2012-06-21
  • 打赏
  • 举报
回复
linq
gruopby count

其实你用sql想一下就ok,在sql下你怎么玩,还是一样玩计算分组count >1的东西就成
q107770540 2012-06-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

怎么掉了一个
C# code

string[] 啊啊啊 = 啊.Distinct().ToArray();
[/Quote]
++
  • 打赏
  • 举报
回复
得到结果:"额","发","个","和"
ParanoidKing 2012-06-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

保留啊,不是去重复。
[/Quote]

什么意思?你想要什么结果?
ParanoidKing 2012-06-21
  • 打赏
  • 举报
回复
怎么掉了一个

string[] 啊啊啊 = 啊.Distinct().ToArray();
  • 打赏
  • 举报
回复
保留啊,不是去重复。
ParanoidKing 2012-06-21
  • 打赏
  • 举报
回复
你是说去掉重复的元素?我能想到三种办法。

List<string> 啊啊 = new List<string>();
for(int i=0; i<啊.Length; i++)
{
if(!啊啊.Contains(啊[i]))
{
啊啊.Add(啊[i]);
}
}
string[] 啊啊啊 = 啊啊.ToArray();



List<string> 啊啊 = 啊.ToList();
啊啊.Sort();
for(int i=1; i<啊啊.Count; i++)
{
if(啊啊[i] == 啊啊[i-1])
{
啊啊.RemoveAt(i--);
}
}
string[] 啊啊啊 = 啊啊.ToArray();



string[] 啊啊啊 = 啊.Distinct().ToArray();

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧