C# 如何使用linq从表中跳过重复ID并选择剩余ID
在一张表格中,我有以下内容: GroupId 3786 3787 3788 3788 所以我只需要带37863787号身份证。如果我使用C# 如何使用linq从表中跳过重复ID并选择剩余ID,c#,mysql,linq,C#,Mysql,Linq,在一张表格中,我有以下内容: GroupId 3786 3787 3788 3788 所以我只需要带37863787号身份证。如果我使用distinct()也需要3788。我不知道在linq中应该使用哪种方法 IQueryable<Sub> subDetails= from carSub in this.UnitOfWork.Repository<CarSub>().Queryable() //from pcs in
distinct()
也需要3788。我不知道在linq中应该使用哪种方法
IQueryable<Sub> subDetails=
from carSub in this.UnitOfWork.Repository<CarSub>().Queryable()
//from pcs in carSub.ConfirmedCarrier.CarrierCandidate.ProductCarrierScores
join p in this.UnitOfWork.Repository<ProductGroup>().Queryable() on carSub.Submission.PlacementID equals p.PlacementID
join pg in this.UnitOfWork.Repository<ProductGroupMember>().Queryable() on p.ProductGroupID equals pg.ProductGroupID
join pcs in this.UnitOfWork.Repository<ProductCarrierScore>().Queryable() on p.ProductGroupID equals pg.ProductGroupID
IQueryable子详细信息=
来自此.UnitOfWork.Repository()中的carSub.Queryable()
//来自carSub.ConfirmedCarrier.CarrierCandidate.ProductCarrierCores中的PC
在carSub.Submission.PlacementID等于p.PlacementID的.UnitOfWork.Repository().Queryable()中加入p
在p.ProductGroupID上的.UnitOfWork.Repository().Queryable()中加入pg等于pg.ProductGroupID
在p.ProductGroupID等于pg.ProductGroupID的.UnitOfWork.Repository()上加入PC
在这个连接中,在p.ProductGroupID等于pg.ProductGroupID的.UnitOfWork.Repository().Queryable()中连接PC
pg是指ProductGroupMember。在该成员中,我必须仅传递不重复的值。请引导我。我被卡住了我想这样做:
按GroupId
对它们进行分组李>
仅获取组中有1个元素的元素李>
代码如下所示:
var groupIds=subDetails.GroupBy(x=>x.GroupId)。其中(x=>x.Count()==1)。选择(x=>x.Key)
另外,可能还有其他更快的解决方案,但这是我首先想到的。我会这样做:
按GroupId
对它们进行分组李>
仅获取组中有1个元素的元素李>
代码如下所示:
var groupIds=subDetails.GroupBy(x=>x.GroupId)。其中(x=>x.Count()==1)。选择(x=>x.Key)
另外,可能还有其他更快的解决方案,但首先想到的是这一点。您可以分组,然后将结果缩小到计数小于2的项目
比如说,
var ids = new List<int> {1, 2, 3, 2, 5, 3, 4};
var itemsNotDuplicate = ids.GroupBy(f => f, t => t,
(k, items) => new {val = k, count = items.Count()}).Where(g => g.count < 2);
varids=新列表{1,2,3,2,5,3,4};
var itemsNotDuplicate=ids.GroupBy(f=>f,t=>t,
(k,items)=>new{val=k,count=items.count()});
您可以按分组,然后将结果缩小到计数小于2的项目
比如说,
var ids = new List<int> {1, 2, 3, 2, 5, 3, 4};
var itemsNotDuplicate = ids.GroupBy(f => f, t => t,
(k, items) => new {val = k, count = items.Count()}).Where(g => g.count < 2);
varids=新列表{1,2,3,2,5,3,4};
var itemsNotDuplicate=ids.GroupBy(f=>f,t=>t,
(k,items)=>new{val=k,count=items.count()});
您也可以随身携带
var list = new List<int> { 3786, 3787, 3788, 3788};
var onlyOne=list.TakeWhile(t=> list.Count(l=>l==t)==1);
var list=新列表{3786378737883788};
var onlyOne=list.TakeWhile(t=>list.Count(l=>l==t)==1);
这与使用GroupBy的方法类似,但您只需要使用一个lambda表达式 你也可以随身携带
var list = new List<int> { 3786, 3787, 3788, 3788};
var onlyOne=list.TakeWhile(t=> list.Count(l=>l==t)==1);
var list=新列表{3786378737883788};
var onlyOne=list.TakeWhile(t=>list.Count(l=>l==t)==1);
这与使用GroupBy的方法类似,但您只需要使用一个lambda表达式 因此,如果ID像123434567
,你想取4567
还是1234567
,还是12457
?那么如果ID像1234567
,你想取4567
还是1234567
?