相关疑难解决方法(0)

将两个列表映射到C#中的字典

给定两个 相同大小的IEnumerable s ,如何将其转换为 Dictionary 使用Linq?

IEnumerable<string> keys = new List<string>() { "A", "B", "C" };
IEnumerable<string> values = new List<string>() { "Val A", "Val B", "Val C" };

var dictionary = /* Linq ? */;
Run Code Online (Sandbox Code Playgroud)

而预期的产出是:

A: Val A
B: Val B
C: Val C
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一些简单的方法来实现它.

我应该担心表现吗?如果我有大量收藏怎么办?


如果有更简单的方法,我不会这样做,目前我这样做:

我有一个Extension方法,它将循环IEnumerable提供元素和索引号.

public static class Ext
{
    public static void Each<T>(this IEnumerable els, Action<T, int> a)
    {
        int i = 0;
        foreach (T e in els)
        {
            a(e, i++); …
Run Code Online (Sandbox Code Playgroud)

.net c# linq ienumerable dictionary

67
推荐指数
3
解决办法
3万
查看次数

在C#中使用"params"关键字表示通用参数

Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>今天在C#.NET 4.5中遇到了这位美丽的代表.我假设16是一个任意停止的地方(哪些方法有超过16个参数?)但它让我思考:在C#中是否可以指定泛型类型可以有任意数量的类型参数?类似于方法的params关键字允许方法的任意数量的参数.像这样的东西:

public class MyInfiniteGenericType<params T[]> { ... }
Run Code Online (Sandbox Code Playgroud)

然后,在类中,您可以通过枚举它们或使用允许在方法中使用T[index]的相同方式来访问类型参数params.

我个人从来没有使用它,但Func代表将是一个使用它的完美场所.不需要16种不同类型的Func!

所以我的问题是,这可以在C#中以任何方式完成,如果不是,这是一个愚蠢的想法吗?

c# generics

49
推荐指数
2
解决办法
1万
查看次数

标签 统计

c# ×2

.net ×1

dictionary ×1

generics ×1

ienumerable ×1

linq ×1