我有一个没有约束的数据库,并且没有在表之间定义外键。我使用Linqpad,但在我的Linqpad中,我没有此数据库的导航属性。
我想这样做
Order_Sub_Items.GroupBy(x => x.Order_Item_Id)
.Where(y => y.Items.Sub_Item_Id != y.Items.First().Sub_Item_Id)
所以,用英语:我想得到我所有的Order_Sub_Items,对于同一个Order_Item_Id我有不同的Sub_Item_Id。
所以我的想法是按Order_Sub_Items进行分组,然后对于我的组中的每个项目,我将Sub_Item_Id与我的第一个元素的Sub_Item_Id进行比较。
查询无效,因为我无法访问Items。为什么?当我只运行第一部分时:
Order_Sub_Items.GroupBy(x => x.Order_Item_Id)
Linqpad中的我在2列上看到结果没有问题。钥匙和物品。
答案 0 :(得分:0)
我想我找到了解决方案
Order_Sub_Items
.GroupBy(x => x.Order_Item_Id)
.ToList()
.Where(x => x.Any(y => y.Sub_Item_Id != x.First().Sub_Item_Id)
或来自图片
Order_Sub_Items.Take(100)
.GroupBy(x => x.Order_Item_Id.Value)
.ToList()
.Where(x => x.Any(y => y.Sub_Item_Id.Substring(0, 11) != x.First().Sub_Item_Id.Substring(0, 11)))
答案 1 :(得分:0)
当您使用GroupBy
执行Linq
操作时,您将获得以下结果:
类型:System.Collections.Generic.IEnumerable< IGrouping< TKey,TElement>> IEnumerable< IGrouping< TKey,TElement>>在Visual Basic中的C#或IEnumerable(Of IGrouping(Of TKey,TElement))中,每个IGrouping< TKey,TElement> object包含TElement类型和键的对象的集合。
https://msdn.microsoft.com/en-us/library/bb534304(v=vs.110).aspx
所以,你正在看一些Linqpad的功能我想,至少要显示它包含N个Grouping'2
类型的项目(其中2指的是参数数量)
IGrouping<TKey, TElement>
的结果将为您提供一个可以开展工作的集合:Enumerable operations,Key
包含您分组的对象。
--- ---编辑
我在你自己的回答中看到你使用了Any()
- 这是众多可枚举操作中的一个。