【发布时间】:2012-10-19 06:37:12
【问题描述】:
我想创建一个可以迭代的anonymous type,接受一个字符串和一个字符串数组。目标是创建一个组列表,每个组都包含人员:
我想知道这样的伪代码是否可行:
var myAnoty =new List<string, string[]>();
myAnoty.add("Programmers", ["Linus", "Bill", "Anders"]);
myAnoty.add("Users", ["John", "Melissa", "Bert"]);
正如Muzz 在 cmets 中指出的那样,我上面的伪代码没有使用匿名类型。 Reed Copsey 下面的回答正在使用它们:var m = new { Group = "Men", Members = new[] { "John", "Tom" } }
不使用匿名类型的工作演示
以下代码works in LinqPad:
void Main()
{
List<Object> myAnoties = new List<Object>();
myAnoties.Add(new Anoty {Group="Men", Member=new string[]{"John","Tom"}} );
myAnoties.Add(new Anoty {Group="Women", Member=new string[]{"Eve","Anna"}} );
myAnoties.Dump();
}
// Define other methods and classes here
class Anoty{
public string Group{get; set;}
public string[] Member{get; set;}
}
不能使用匿名类型
以下代码使用匿名类型。但不知何故,字符串数组不适用于匿名类型。
var m = new { Group= "Men", Member=string[]{"John","Tom"}};
var w = new { Group= "Women", Member=string[]{"Eve","Anna"}};
List<object> myAnoties = new List<object>();
myAnoties.Add(m);
myAnoties.Add(w);
有没有办法让我的伪代码var x = new List<string,string[]>() 或匿名类型(如上)的东西运行?
谢谢
【问题讨论】:
-
这里为什么要使用匿名类型?只创建一个类型来保存这些信息似乎更简单。
-
你试过
var foo = new List<String, dynamic>()吗? (dynamic关键字) -
我认为您对匿名类型和类型推断感到困惑。您的伪代码没有使用匿名类型。
-
@ReedCopsey 我有许多不同的类型我想添加 - 所以使用匿名类型会很好,所以我不必关心创建类型
-
@Muzz 据我了解文档 List
只能有一种类型。我在 LinqPad 中尝试过,但没有成功: var foo = new List<string, dynamic>(); foo.add("Men", string[]{"John","Tom"});
标签: c# c#-4.0 generics collections anonymous-types