gpt4 book ai didi

c# - 如何使用 LINQ 从多列列表中获取 x 行

转载 作者:太空宇宙 更新时间:2023-11-03 22:13:51 24 4
gpt4 key购买 nike

我有一个看起来像这样的列表:

catId    itemId    value
1 5 "some text"
1 19 "some text"
1 21 "some text"
2 6 "some text"
2 8 "some text"
3 9 "some text"
3 82 "some text"

注意 catId 列。我将如何为第一列中的每个唯一值取 2 行(或删除额外的行)。 catId=1 只有 2 行 catId=2 有 2 行等等?

我的列表名为 distinctXSelling,目前我是这样使用它的:

            foreach (var item in distinctXSelling)
{
xSelling.InnerHtml += item.value;
}

最佳答案

您可以按类别 ID 对项目进行分组,然后从每个组中选择前两个项目,然后将组序列展平为源项目序列。这看起来像:

var query = source.GroupBy(item => item.catId)
.SelectMany(catGroup => catGroup.Take(2));

请注意 Take方法接受最多 一定数量的项目,因此如果类别只有一个项目,则不会抛出此问题。

正如 BrokenGlass 指出的那样,如果您希望按特定顺序过滤项目,您可能需要一个 .OrderBy(可能还需要一个 .ThenBy)。

您可能还想考虑将循环替换为:

xSelling.InnerHtml = string.Concat(query.Select(item => item.value));

关于c# - 如何使用 LINQ 从多列列表中获取 x 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com