创建一个从列表

问题描述:

查找我想从列表中创建一个Lookup创建一个从列表

List<User> users = new List<User>() { new User() { id = "1", code = "a" }, 
             new User() {id="2", code= "a" }, 
             new User() {id="3", code= "a" }, 
             new User() {id="4", code= "b" }, 
             new User() {id="1", code= "b" } 
      }; 

我写的代码是

Lookup<string, string> lkup = (Lookup<string, string>)users.ToLookup(k => k.id, k => k.code); 

虽然,这个工程,我endup的查找中,我可以” t找到价值。

其次,我不明白为什么我不能在你原来的代码创建一个使用的东西Lookup

Lookup<string, string> lkup = users.ToLookup<string,string>(
+1

你是什么意思“无法找到该值”?你能举一个例子来看看价值和预期的结果吗? –

+0

1.什么意思是“找不到价值”? 'lkup [“1”]'应该返回第一个用户的'代码'就好了。不过,你真的应该摆脱剧组,而只是使用'ILookup ';向具体课堂施放是没有意义的。呃,因为这不是一个完整的陈述?您必须将参数传递给'ToLookup'并添加一个关闭的paren和一个分号。 –

+0

@MikeHixson:我写了'var output = lkup.Where(l => l.Key ==“1”)。ToList();'并不能得到值 – Rajat

值在那里。在你枚举它们之前你无法看到它们。下面将打印每个键,然后按自己的价值观下一行:

List<User> users = new List<User>() { new User() { id = "1", code = "a" }, 
          new User() {id="2", code= "a" }, 
          new User() {id="3", code= "a" }, 
          new User() {id="4", code= "b" }, 
          new User() {id="1", code= "b" } 
}; 
Lookup<string, string> lkup = (Lookup<string,string>)users.ToLookup(x => x.id, x => x.code); 
foreach(var k in lkup) 
{ 
    Console.WriteLine(k.Key); 
    foreach(var v in k) 
    { 
     Console.Write($"{v} "); 
    } 
    Console.WriteLine(); 
} 

此:

Lookup<string, string> lkup = users.ToLookup<string,string>(k => k.id, k => k.code); 

不会起作用,因为lkup必须ILookupLookup

ILookup<string, string> lkup = users.ToLookup(k => k.id, k => k.code); 

威尔产生与铸造到Lookup相同的东西。

下面是我用列表中的类:

class User 
{ 
    public string id = ""; 
    public string code = ""; 
} 
+0

最后一段代码给出了一个编译错误“字符串不包含id的定义” – Rajat

+0

对不起,有''部分,但不需要它。 – tinstaafl