我有一个名为Holding的自定义类型列表。我正在尝试使用LNIQ来查询此列表中的某些值。我会返回一个类型为Hold的新列表。
以下是我目前所使用的不起作用的行。
List<Holding> hlds = _holdingList
.Where(hld => hld.IdSedol == lookThroList[i].Sedol)
.GroupBy(hld => new Holding())
.ToList();
通过将上面的行更改为var hlds =
确实有效并产生正确的结果。为什么我不能投出或做一些让第一线工作的东西?
下面的一行我不太确定。返回的Holding对象将引用原始列表中的保持对象还是新对象?
GroupBy(hld => new Holding())
更新
我之所以使用GroupBy(其外观错误)是因为我不想要多个相同的基金代码,只是想在基金代码不同的地方。但是,考虑到这一点,我不需要分组。
答案 0 :(得分:3)
听起来这就是你所需要的:
List<Holding> hlds = _holdingList
.Where(hld => hld.IdSedol == lookThroList[i].Sedol)
.ToList();
GroupBy()
永远不会生成Holding
的集合
在您的代码中,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
,在这种情况下可能有点矫枉过正。