我有两个自定义列表。一个列表称为 detailList
,另一个列表称为 hldList
。下面是一个简化版本。
class Details
{
string Fund
string DT
}
class Holding
{
string Fund
string Name
double Price
double Amount
}
我想做的是拆分hldList
。 hldList
中的所有基金都存在于detailList
中。我想根据 detailList
中的 DT
值拆分 hldList
,下面是一个简单的例子,
detailList
Fund DT
LMON E
LMPN K
PLLM E
对于此示例,我只会填充 hldList
中的 Fund
属性,但会填充其他属性。
hldList
Fund
LMON
LMON
LMON
LMPN
LMPN
PLLM
PLLM
所以我希望在 detailList
的 DT
属性上拆分它,所以答案应该是,
E List K List
LMON LMPN
LMON LMPN
LMON
PLLM
PLLM
我认为实现此目标的最佳方法是使用 LINQ?但是我不确定该怎么做?
最佳答案
您可以使用 GroupBy
按此属性分组。您只需要将这两个列表与 Join
链接起来:
var dtGroups = from h in hldList
join d in detailList
on h.Fund equals d.Fund
group h by d.DT into dtGroup
select dtGroup;
foreach (var grp in dtGroups)
Console.WriteLine("Key:{0} Funds:{1}"
, grp.Key, string.Join(",", grp.Select(h => h.Fund)));
如果你想要一个List<Holding>
对于每个 dt 组:
IEnumerable<List<Holding>> dtHoldingLists =
from h in hldList
join d in detailList
on h.Fund equals d.Fund
group h by d.DT into dtGroup
select dtGroup.ToList();
关于c# - 根据另一个列表中的值拆分自定义列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32221286/