2014-07-22 56 views
3

添加更多的项目到一组我有这个疑问:通过声明

var rowsPerProvider = (from row in dt.Select() 
     let emp = row["f_name"].ToString().Trim() 
     group row by emp 
     into g 
     select g).ToDictionary(
      g => g.Key, 
      g => g.ToArray()); 

如何更新它也对一些列过滤器?例如目前它在f_name上。我如何将它更新到f_namem_namel_name

回答

3

请通过包含要下地组的匿名对象:

var rowsPerProvider = (from row in dt.Select() 
    group row by new 
    { 
     emp1 = row["f_name"].ToString().Trim(), 
     emp2 = row["m_name"].ToString().Trim(), 
     emp3 = row["l_name"].ToString().Trim(), 
    } 
    into g 
    select g).ToDictionary(
     g => g.Key, 
     g => g.ToArray()); 
+1

感谢,所以当我们用这种方式组合,可以确保所有的人本字典的每个键都有相同的名字,中间名和姓氏。对? – CutHimSomeSlack

+2

@CutHimSomeSlack - 是的,匿名类型有一个Equals和GetHashCode,检查所有的属性是相同的 - 看到这个答案:http://stackoverflow.com/a/12123542/383710 – DaveShaw

3

使用匿名类:

// (...) 
    group row by new { emp, something }