读书人

有关于linq第二问,该怎么处理

发布时间: 2012-02-14 19:19:19 作者: rapoo

有关于linq第二问
private static List <Student> GetStudents()
{
List <Student> students = new List <Student> {
new Student{ Name= "YOUNG ", Age=25, Language= "Chinese "},
new Student{ Name= "JESSIE ", Age=21, Language= "Scotland "},
new Student{ Name= "KELLY ", Age=18, Language= "English "},
new Student{ Name= "JUNE ", Age=20, Language= "English "},
new Student{ Name= "ADRIAN ", Age=22, Language= "Italy "},
new Student{ Name= "BRUCE ", Age=17, Language= "Scotland "}
};
return students;

}

private static void ComplexSelectLambda()
{
Console.WriteLine( " <hr> 多重选择的Lambda表达式: <br> ");

List <Student> studentList = GetStudents();
string[] stringArray = { "Ajax ", "Csharp ", "Javascript ", "Css Desige ", "Asp.net ", "Gis " };

//如何写才能输入以下的结果
var stu = from sl in studentList
from s in stringArray
select new {name=sl.Name,language=s};

foreach (var s in stu)
{
Console.WriteLine(string.Format( " <div class= 'result '> {0} </div> ", s));


}
}

//////////////////////////////////
问题:如何写才能输入这样的结果?

<name=young,language=Ajax>
<name=JESSIE,language=Csharp>
<name=KELLY,language=Javascript>
<name=JUNE,language=Css Desige>
<name=ADRIAN,language=Asp.net>
<name=BRUCE,language=Gis>
//////////////////////////////////

****************************************************
但是现在输出的结果是:
<hr> 多重选择的Lambda表达式: <br>
<div class= 'result '> {name=YOUNG, language=Ajax} </div>
<div class= 'result '> {name=YOUNG, language=Csharp} </div>
<div class= 'result '> {name=YOUNG, language=Javascript} </div>
<div class= 'result '> {name=YOUNG, language=Css Desige} </div>
<div class= 'result '> {name=YOUNG, language=Asp.net} </div>
<div class= 'result '> {name=YOUNG, language=Gis} </div>
<div class= 'result '> {name=JESSIE, language=Ajax} </div>
<div class= 'result '> {name=JESSIE, language=Csharp} </div>
<div class= 'result '> {name=JESSIE, language=Javascript} </div>
<div class= 'result '> {name=JESSIE, language=Css Desige} </div>
<div class= 'result '> {name=JESSIE, language=Asp.net} </div>
<div class= 'result '> {name=JESSIE, language=Gis} </div>
<div class= 'result '> {name=KELLY, language=Ajax} </div>
<div class= 'result '> {name=KELLY, language=Csharp} </div>
<div class= 'result '> {name=KELLY, language=Javascript} </div>
<div class= 'result '> {name=KELLY, language=Css Desige} </div>
<div class= 'result '> {name=KELLY, language=Asp.net} </div>
<div class= 'result '> {name=KELLY, language=Gis} </div>
****************************************************

[解决办法]
好像不用LINQ吧,因为你需要的是按序对应啊,这样就可以了

for (int i=0; i < studentList.Count; i++)
{
Console.WriteLine( " <name={0},language={1}> ", studentList[i].Name, stringArray[i]);
}

如果你坚持要用LINQ的话,试一下

var langlist = stringArray.Select((la,i) => new {lang=la,index=i});

var stulist = studentList.Select((st,i) => new {name=st.Name,index=i});

var stu2 = from la in langlist
from st in stulist
where la.index == st.index
select new {name = st.name, language = la.lang};

foreach(var s2 in stu2)
Console.WriteLine(string.Format( " <name={0},language={1}> ", s2.name, s2.language));

读书人网 >C#

热点推荐