的SelectMany [英] SelectMany
问题描述
你好,
请看这个样本。
- 创建w员工类:
public int id;
public string firstName;
public string lastName;
{
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();
{
id = e.id,
name = string .Format( " ; {0} {1}" ,e.firstName,e.lastName),
options = o!= null ?o.optionsCount:0}))。SelectMany(r => r) ;
< 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屋!
查看全文