gpt4 book ai didi

c# - 构建唯一 ID 及其计数集合的最佳方式

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:47 25 4
gpt4 key购买 nike

我已经研究过数组、数组列表、字典的各种不同方式...但是因为我习惯了 PHP,所以我不能完全确定我可以收集以下信息的最佳方式。

我的程序遍历每个用户,如果他们是位置 ID,我想将其添加到某种集合/数组中。预计不同的用户将具有相同的位置 ID。

如果位置 ID 相同,我需要增加该位置 ID 出现次数的整数。

例子:

User1 - Location1
User2 - Location3
User3 - Location3

Location1 = 1
Location3 = 2

另外 我需要以某种方式将每个用户 ID 附加到此集合。所以 Location3/2 occurrences/user2/user3

我已经花了大约两个小时来尝试找出执行此操作的最佳方法,多维数组、数组列表、字典的所有不同方法都有点令人困惑,因为它们对我的 PHP 知识来说似乎都是抽象的。我认为 C# 以完全不同的方式处理数组。

本质上,具有唯一位置 ID/出现/和用户集合的集合需要存储在可以作为参数传递到我程序中其他地方的东西中。

我制作了一个 PHP 脚本,它完全符合我的要求

foreach($call["data"] as $v)
{
// Foreach USER ($v containing their unique ID and location ID.)

$user_id = $v["id"];
$location_id = $v["location"]["id"];

// This adds the location ID as the key within the array, followed by every user who has it. I don't need a count in this case, as I could just count the number of users.
$collection[$location_id][$user_id] = null;
}

这反过来会在使用 print_r 打印时创建此数组

[106078429431815] => Array
(
[620790873] =>
[626276302] =>
[100000152470577] =>
)

(输出的一小部分)。 - 添加了 PHP 示例。任何人都知道如何让 C# 以与我的 PHP 数组相同的方式收集相同的信息?

最佳答案

using System.Linq;

var grouppingByLocation = users.GroupBy(u => u.LocationID);
foreach (var g in grouppingByLocation)
{
Console.WriteLine("Location id: {0}", g.Key);
foreach (var u in g)
{
Console.WriteLine("User id: {0}", u.ID);
}
}

参见 Enumerable.GroupBy()了解更多详情。

这是一个 Extension Method IEnumerable<T> 由接受 lambda expression 的任何内置集合(例如数组 T[]List<T>Dictionary<K,V> 等)实现的接口(interface)指向您分组所依据的类集合的属性。

关于c# - 构建唯一 ID 及其计数集合的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14803994/

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