我有一个名为Holding的自定义类型列表。我正在尝试使用LNIQ来查询此列表中的某些值。我会返回一个新的Holding类型列表。
下面是我目前拥有的不起作用的行。
List<Holding> hlds = _holdingList
.Where(hld => hld.IdSedol == lookThroList[i].Sedol)
.GroupBy(hld => new Holding())
.ToList();
通过将上面的行更改为var hlds =
,可以工作并产生正确的结果。为什么我不能选演员或做一些事情来让一线工作?
还有下面这行我也不完全确定。返回的Holding对象将引用我原始列表中的Holding,还是一个新对象?
GroupBy(hld => new Holding())
更新
我之所以使用GroupBy(从外观上看是错误的),是因为我不想要多个相同的基金代码,只想要基金代码不同的地方。然而,就我所想,我不需要按进行分组。
听起来这就是你所需要的:
List<Holding> hlds = _holdingList
.Where(hld => hld.IdSedol == lookThroList[i].Sedol)
.ToList();
GroupBy()
永远不会生成Holding
s的集合。
在您的代码中,GroupBy()
将生成一个IEnumerable<IGrouping<Holding, Holding>>
。
如果您想过滤掉重复项,可以这样做(假设Holding
类具有FundCode
属性或类似属性):
List<Holding> hlds = _holdingList
.Where(hld => hld.IdSedol == lookThroList[i].Sedol)
.GroupBy(hld => hld.FundCode)
.Select(g => g.First())
.ToList();
Linq也有一个Distinct()
方法,但这通常需要定义一个IEqualityComparer
,在这种情况下这可能有些过头了。