关于LINQ的问题

anlun 2014-05-30 02:31:14

现在有两个结果集做筛选
第一个结果集
如:
var search1= from c in AA select new{科目:book,姓名=name,价格=price};
第个二个结果集
如:
var search2=from c in CC select new{ 姓名=name,年龄=old};

现在要筛选 search1 中姓名不在search2中的记录如何查
...全文
152 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
蝶恋花雨 2014-05-30
  • 打赏
  • 举报
回复
这样也行
 var dd= from p in lstA where !(from pp in lstC select pp.name).Contains(p.name) select p.name;
foreach (var item in dd)
			   {
					MessageBox.Show(item.ToString());
			   }
			   //输出李素不在CC里面
蝶恋花雨 2014-05-30
  • 打赏
  • 举报
回复
  private void button4_Click(object sender, EventArgs e)
		  {
			   List<AA> lstA = new List<AA>(){
			   new AA { book = "科目1", name = "张三", price = "100" },
			   new AA { book = "科目2", name = "李素", price = "300" },
					 new AA { book = "科目3", name = "王五", price = "3400" }};

			   List<CC> lstC = new List<CC>() { 
			   new CC{name="张三",old="24"}, new CC{name="王五",old="26"} ,
			   new CC{name="王五五",old="27"}
			   };

			   IEnumerable<string> dd = (from p in lstA select p.name).Except(from p in lstC select p.name);
			   foreach (var item in dd)
			   {
					MessageBox.Show(item.ToString());
			   }
			   //输出李素不在CC里面
		  }
		  public class AA
		  {
			   public string book { get; set; }
			   public string name { get; set; }
			   public string price { get; set; }
		  }
		  public class CC
		  {
			   public string name { get; set; }
			   public string old { get; set; }
		  }
学学你们 2014-05-30
  • 打赏
  • 举报
回复
search1.Where(e => !search2.Contains(e.name));
ok82456 2014-05-30
  • 打赏
  • 举报
回复
var name= from a in search2 select a.name; var res=from b in search1 where !name.contain(b.name) select b;
蝶恋花雨 2014-05-30
  • 打赏
  • 举报
回复
用Except
int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 }; 
    int[] numbersB = { 1, 3, 5, 7, 8 }; 

    IEnumerable<int> aOnlyNumbers = numbersA.Except(numbersB); 
    foreach (var n in aOnlyNumbers) 
    { 
        Console.WriteLine(n); 
    } 
输出 0 2 4 6 9
tcmakebest 2014-05-30
  • 打赏
  • 举报
回复
把 search2 中的 name 取出形成集合,然后用 contains 判断 var res = from c in search1 where !(from d in search2 select d.name).contain(c.name) select c;
wg5945 2014-05-30
  • 打赏
  • 举报
回复
search1.Where(e => !search2.Contains(e.name));

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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