首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-02-14 
有关于linq第二问privatestaticList StudentGetStudents(){List StudentstudentsnewList Student{n

有关于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));

热点排行