VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • C#教程之使用Linq查找重复

复制代码
 1 namespace RemoveTheSame
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             List<User> list = new List<User>()
 8             {
 9                 new User{Id=1,Name="user1",Pwd="123"},
10                 new User{Id=2,Name="user1",Pwd="123"},
11                 new User{Id=3,Name="user2",Pwd="123"}
12             };
13             GetTheSame(list, out string tkey);
14             Console.WriteLine($"The Same is {tkey}");
15             Console.ReadKey();
16         }
17         public static void GetTheSame(List<User> listOld, out string tkey/*,out User user*/)
18         {
19             tkey = null;
20             var result = from x in listOld
21                          group x by x.Name into g
22                          where g.Count() > 1
23                          select g;
24             foreach (var item in result)
25             {
26                 tkey = item.Key;
27             }
28         }
29     }
30     public class User
31     {
32         public string Name { get; set; }
33         public int Id { get; set; }
34         public string Pwd { get; set; }
35 
36     }
37 }


其实就是一行代码解决的问题~
list.GroupBy(x => x.Name).Where(x => x.Count() > 1).ToList().ForEach(x => Console.WriteLine(x.Key));

 

复制代码

 

 
 
 
好文要顶 关注我 收藏该文  
若青若墨
关注 - 1
粉丝 - 2
 
 
+加关注
0
0
 
 
 
« 上一篇:简单的操作符重载,笔记
» 下一篇:简单多播委托Demo
posted @ 2018-08-28 09:37 若青若墨 阅读(233) 评论(8) 编辑 收藏
 

 
  
#1楼 2018-11-07 14:59 | ~雨落忧伤~  
GetTheSame(list, out string tkey); 报错
支持(0)反对(0)
  
#2楼 2018-11-07 15:00 | ~雨落忧伤~  
错误 2 无效的表达式项“string”
支持(0)反对(0)
  
#3楼[楼主2018-11-07 15:04 | 若青若墨  
@ ~雨落忧伤~
引用错误 2 无效的表达式项“string”

发源码我看看呢,应该没错的。
我的代码虽然简单但是都是实际测试过的。
支持(0)反对(0)
  
#4楼 2018-11-08 11:06 | ~雨落忧伤~  
vs2013 运行的 不知道 支不支持这种语法~?
支持(0)反对(0)
  
#5楼[楼主2018-11-08 11:08 | 若青若墨  
@ ~雨落忧伤~
引用vs2013 运行的 不知道 支不支持这种语法~?

2013似乎不支持C#6.0以上的语法
要用string.format
-----------------------------------------------
$"The Same is {tkey}"
这个字符串插值也不能使用
支持(0)反对(0)
  
#6楼 2018-11-08 11:08 | ~雨落忧伤~  
<img data-cke-saved-src="https://img2018.cnblogs.com/blog/856389/201811/856389-20181108110814961-781388809.png" src="https://img2018.cnblogs.com/blog/856389/201811/856389-20181108110814961-781388809.png" alt="" border="0" "="" style="margin: 0px; padding: 0px; border: 0px; max-width: 400px; max-height: 300px;">
支持(0)反对(0)
  
#7楼 2018-11-08 11:08 | ~雨落忧伤~  
class Program
{
static void Main(string[] args)
{
List<User> list = new List<User>()
{
new User{Id=1,Name="user1",Pwd="123"},
new User{Id=2,Name="user1",Pwd="123"},
new User{Id=3,Name="user2",Pwd="123"}
};
GetTheSame(list, out string tkey);
Console.WriteLine($"The Same is {tkey}");
Console.ReadKey();
}
public static void GetTheSame(List<User> listOld, out string tkey/*,out User user*/)
{
tkey = null;
var result = from x in listOld
group x by x.Name into g
where g.Count() > 1
select g;
foreach (var item in result)
{
tkey = item.Key;
}
}
}
public class User
{
public string Name { get; set; }
public int Id { get; set; }
public string Pwd { get; set; }

}
支持(0)反对(0)
  
#8楼[楼主2018-11-08 15:45 | 若青若墨  
@ ~雨落忧伤~
稍微修改了下,你看下,我运行没问题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class Program
   {
       static void Main(string[] args)
       {
           //List集合初始化器
           List<User> usersList = new List<User>() {
               new User() { Name = "雨夜忧伤First", Id = 1, Pwd = "123" },
               new User() { Name = "雨夜忧伤First", Id = 1, Pwd = "123" },
               new User() { Name = "雨夜忧伤Second", Id = 1, Pwd = "123" },
               new User() { Name = "雨夜忧伤Third", Id = 1, Pwd = "123" },
               new User() { Name = "雨夜忧伤Third", Id = 1, Pwd = "123" },
           };
           //调用方法,遍历集合,(建议使用新语法字符串插值 $)
           GetTheSame(usersList).ForEach(x => Console.WriteLine(string.Format("==重复的值为{0}==", x)));
           Console.ReadKey();
       }
       /// <summary>
       /// 使用LINQ查询重复
       /// </summary>
       /// <param name="users"></param>
       /// <returns>返回数据集合</returns>
       public static List<string> GetTheSame(List<User> users)
       {
           //申明一个临时的List集合
           List<string> listTemp = new List<string>();
           //IEnumerable<IGrouping<string,User>类型
           var result = from in users
                        group by x.Name into g
                        where g.Count() > 1
                        select g;
           //遍历集合,提取IEnumerable<IGrouping<string,User>中的Key
           foreach (var item in result)
           {
               listTemp.Add(item.Key);
           }
           return listTemp;
       }
   }
   /// <summary>
   /// User类
   /// </summary>
   public class User
   {
       public string Name { getset; }
       public int Id { getset; }
       public string Pwd { getset; }
   }