的SelectMany [英] SelectMany

查看:78
本文介绍了的SelectMany的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,

请看这个样本。

- 创建w员工类:

public int id;
public string firstName;
public string lastName;

public static Employee [] GetEmployeesArrayList()
{
Employee [] emp = new Employee < font size = 2> [] {
new Employee < font size = 2> {id = 1,firstName = " Joe" ,lastName = < font color ="#a31515"size = 2>" Rattz" },
new 员工 {id = 2,firstName = " William" ; ,lastName = " Gates" },
new Employee {id = 3,firstName = " Anders" ,lastName = " Hejlsberg" },
new Employee {id = 3,firstName = " Anders" ,lastName = "Hejlsberg" },
new 员工 {id = 4,firstName = " David" ,lastName = " Lightman" },
new Employee {id = 101,firstName = " Kevin" ,lastName = " Flynn" },
new 员工 {id = 102,firstName = " Michael" ,lastName = " Bolton" },
};
return (emp);
}

- 创建EmployeeOptionEntry类:

public int id;
public long optionsCount;
public DateTime dateAwarded;


public static EmployeeOptionEntry [] GetEmployeeOptionEntries()
{
EmployeeOptionEntry [] empOptions = new EmployeeOptionEntry [] {
new EmployeeOptionEntry {id = 1,optionsCount = 2,dateAwarded = DateTime .Parse( " 1999/12/31" )},< br> new EmployeeOptionEntry {id = 2 ,optionsCount = 10000,dateAwarded = DateTime .Parse( " 1992/06/30" )},
new EmployeeOptionEntry {id = 2,optionsCount = 60000,dateAwarded = < font color ="#2b91af"size = 2> DateTime
.Parse( " 1994/01/01" )},
new EmployeeOptionEntry {id = 3,optionsCount = 5000,dateAwarded = DateTime .Parse( " 1997/09/30" )},
new EmployeeOptionEntry {id = 2,optionsCount = 10000,dateAwarded = < font color ="#2b91af"size = 2> DateTime .Parse( " 2003/04/04" )},
new EmployeeOptionEntry {id = 3,optionsCount = 7500,dateAwarded = DateTime 。解析( " 1998/09/30" )},
new EmployeeOptionEntry {id = 3,optionsCount = 7500,dateAwarded = DateTime .Parse( "1998/09/30" ; )},
new EmployeeOptionEntry {id = 4,optionsCount = 1500,dateAwarded = DateTime 。解析( " 1997/12/31" )},
new EmployeeOptionEntry {id = 101,optio nsCount = 2,dateAwarded = DateTime .Parse( " 1998/12/31" )}
};
return (empOptions);
}


- 在Main类中:

private static void Main( string [] args)
{
员工 [] employee = 员工 .GetEmployeesArray();
EmployeeOptionEntry [] employeeOption = EmployeeOptionEntry .GetEmployeeOptionEntries();


var employeeOptions1 = employee.GroupJoin(employeeOption,e => e.id,o => o.id,(e,os)=> os.Select(o => new
{
id = e.id,
name =
string .Format( " ; {0} {1}" ,e.firstName,e.lastName),
options = o!=
null ?o.optionsCount:0}))。SelectMany(r => r) ;

foreach var item in employeeOptions1)
< font color ="#2b91af"size = 2>控制台
.WriteLine(item);


}

- 它给了我这个结果:

{id = 1,name = joe Rattaz,option = 2}
{id = 2 ,name = William Gates,option = 10000}
{id = 2,name = William Gates,option = 10000}
{id = 2,name = William Gates,option = 60000}
{id = 3,name = Anders Hejlsberg,option = 5000}
{id = 3,name = Anders Hejlsberg,option = 7500}
{id = 3,name = Anders Hejlsberg,option = 7500}
{id = 3,name = Anders Hejlsberg,option = 5000}
{id = 3,name = Anders Hejlsberg,option = 7500}
{id = 3,na me = Anders Hejlsberg,选项= 7500}
{id = 4,name = David Lighman,option = 2}
{id = 101,name = Kevyn Flynn,option = 2}



但我不知道结果。因此,任何人都可以将问题描述给我以获得此结果。






















































>解决方案

你好赫马,很抱歉,如果我不理解你的问题。要获得上面的结果,您可以按如下方式编写LINQ查询:














在o上的employeeOptions中加入o .Id等于e.Id
选择新的{e.Id, 名称 = e.FirstName + QUOT; " + e.LastName,o.OptionsCount}

Hello ,

  Plase look at this sample .

 -  create w Employee  class :
    
public int id;
public string firstName;
public string lastName;

public static Employee[] GetEmployeesArrayList()
{
Employee[] emp = new Employee[] {
new Employee { id = 1, firstName = "Joe", lastName = "Rattz" },
new Employee { id = 2, firstName = "William", lastName = "Gates" },
new Employee { id = 3, firstName = "Anders", lastName = "Hejlsberg" },
new Employee { id = 3, firstName = "Anders", lastName = "Hejlsberg" },
new Employee { id = 4, firstName = "David", lastName = "Lightman" },
new Employee { id = 101, firstName = "Kevin", lastName = "Flynn" },
new Employee {id = 102,firstName = "Michael",lastName = "Bolton" },
};
return (emp);
}

- create EmployeeOptionEntry class :

public int id;
public long optionsCount;
public DateTime dateAwarded;

public static EmployeeOptionEntry[] GetEmployeeOptionEntries()
{
EmployeeOptionEntry[] empOptions = new EmployeeOptionEntry[] {
new EmployeeOptionEntry {id = 1,optionsCount = 2,dateAwarded = DateTime.Parse("1999/12/31") },
new EmployeeOptionEntry {id = 2,optionsCount = 10000,dateAwarded = DateTime.Parse("1992/06/30") },
new EmployeeOptionEntry {id = 2,optionsCount = 60000,dateAwarded = DateTime.Parse("1994/01/01") },
new EmployeeOptionEntry {id = 3,optionsCount = 5000,dateAwarded = DateTime.Parse("1997/09/30") },
new EmployeeOptionEntry {id = 2,optionsCount = 10000,dateAwarded = DateTime.Parse("2003/04/01") },
new EmployeeOptionEntry {id = 3,optionsCount = 7500,dateAwarded = DateTime.Parse("1998/09/30") },
new EmployeeOptionEntry {id = 3,optionsCount = 7500,dateAwarded = DateTime.Parse("1998/09/30") },
new EmployeeOptionEntry {id = 4,optionsCount = 1500,dateAwarded = DateTime.Parse("1997/12/31") },
new EmployeeOptionEntry {id = 101,optionsCount = 2,dateAwarded = DateTime.Parse("1998/12/31") }
};
return (empOptions);
}

- in the Main class :
    
private static void Main(string[] args)
{
Employee[] employee = Employee.GetEmployeesArray();
EmployeeOptionEntry[] employeeOption = EmployeeOptionEntry.GetEmployeeOptionEntries();

var employeeOptions1 = employee.GroupJoin(employeeOption, e => e.id, o => o.id, (e, os) => os.Select(o => new
                                                                                                                 
{
                                                                                                                   id = e.id,
                                                                                                                   name =
string.Format("{0} {1}", e.firstName, e.lastName),
                                                                                                             options = o !=
null ? o.optionsCount : 0})).SelectMany(r => r);

foreach (var item in employeeOptions1)
     
Console.WriteLine(item);

}

- it gives me this result :

      { id=1 , name = joe Rattaz , option =2}
      { id=2 , name = William Gates , option =10000}
      { id=2 , name = William Gates  , option =10000}
      { id=2 , name = William Gates  , option =60000}
      { id=3 , name = Anders Hejlsberg, option =5000}
      { id=3 , name = Anders Hejlsberg, option =7500}
      { id=3 , name = Anders Hejlsberg, option =7500}
      { id=3 , name = Anders Hejlsberg, option =5000}
      { id=3 , name = Anders Hejlsberg, option =7500}
      { id=3 , name = Anders Hejlsberg, option =7500}
      { id=4 , name = David Lighman, option =2}
      { id=101 , name = Kevyn Flynn, option =2}


   
   But I dont know the result . So could anyone descripe me the quesrto to get this result .

     thanks 

  hema


ASk

解决方案

Hello hema, Sorry if I did not understand your question well. To get the results above you could write a LINQ query as follows:

from e in employees  
join o in employeeOptions on o.Id equals e.Id  
select new {e.Id, Name = e.FirstName + " " + e.LastName, o.OptionsCount}  
 


这篇关于的SelectMany的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆