请教一条linq语句

比如我有一个model类
public class TreeJsonModel
{
public string id { get; set; }
public string text { get; set; }
public string pid { get; set; }
}

然后一个model类集合IList<TreeJsonModel> list

请问如何用一条linq从list中查出所有pid值不存在于id中的model集合
...全文
134 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
对于linq to object,可以写
var result = from x in list
                where !(from y in list
                        where y.id == x.pid
                        select y).Any()
                select x;
之类的。 但是你要先搞明白你是不是要使用 linq to object。如果你是使用其它某种 linq provider,那么要看它支持什么语法,能否原生支持(像这里的Any表达式,如果使用到数据库上,如果不能原生支持,那么你就可能将一个原本10毫秒的查询变为了10秒钟的查询)。不要仅仅抠 linq 这个字儿,还要说明白你是不是 “to object” 或者别的什么 provider。
wanghui0380 2015-06-27
  • 打赏
  • 举报
回复
闲着也是闲着,写个和一楼不一样滴
          var res = from p in list
                      join p1 in list on p.pid equals p1.id into temp_p1
                      from temp_p2 in temp_p1.DefaultIfEmpty()
                      where temp_p2 == null
                      select new { p, temp_p2 };
wg5945 2015-06-27
  • 打赏
  • 举报
回复
list.Where(x => list.All(y => y.id != x.pid)).ToList()

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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