使用“分组依据”获取自定义类型的新列表



我有一个名为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,在这种情况下这可能有些过头了。

相关内容

  • 没有找到相关文章

最新更新