在SQLServer中加入逗号分隔值我正在写一道题使用LINQ加入li。如何获得包含3个表组合的结果表?我必须将表格合并成一行。有任何想法吗?人--------------身份证|1身份证|2姓名|大卫的名字|Ameyy的姓氏|David1姓氏|Ameyy2约会--------------ID|19PeopleId|1主题|描述参与者--------------ID|1ID|2AppointmentId|19AppointmentId|19PeopleId|1PeopleId|2结果--------------------------------ID|1主题|课题参与者|DavidDavid1,AmeyyAmeyy2Linq查询;IQueryablequery=db.Randevu.Join(db.Kisi,appointment=>appointment.TALEPEDENKISI,people=>people.ID,(appointment,people)=>newAppointmentPoolModel{Id=appointment.ID,Subject=appointment.Subject,注意=约会.NOTLAR,NameSurname=people.Name+""+people.Surname,RequestedId=people.ID,//Participan=string.Join(",",)});varresult=query.OrderBy(appointment=>randevu.AppointmentStartDate).ToList();你可以试试这个。varqPeoples=Participants.Join(Peoples,pr=>pr.PeopleId,pe=>pe.Id,(pr,pe)=>new{Part=pr,People=pe});varresult=Appointments.Select(app=>new{app.Id,app.Subject,Participant=String.Join(",",qPeoples.Where(q=>q.Part.AppointmentId==app.Id).Select(s=>new{FullName=String.Format("{0}{1}",s.People.Name,s.People.Surname)}))}).ToList();你应该逐步调查。这里有一个例子,有两个专用连接和一个groupBy(在你的情况下缺少):以上就是C#学习教程:在SQLServer中加入逗号分隔值了解更多C#学习教程,希望你付出更多关注它——publicclassPeople{publicintId{get;放;}公共字符串名称{得到;放;}publicstring姓氏{get;放;}}publicclassAppointment{public}publicstringSubject{get;放;}}publicclass参与{publicintId{get;放;}publicintPeopleId{得到;放;}publicintAppointmentId{得到;staticvoidMain(string[]args){//Example-Data(在这种格式下会有帮助;))Listpeople=newList(){newPeople(){Id=1,Surname="David1",Name="David"},newPeople(){Id=2,Surname="Ameyy2",Name="Ameyy"}};列表约会=newList(){newAppointment(){Id=1,Subject="description"}};列表参与=newList(){newParticipation(){Id=1,PeopleId=1,AppointmentId=1},newParticipation(){Id=1,PeopleId=2,AppointmentId=1}};Console.WriteLine("*****JOIN预约参与*****");//一开始我们想将表'Appointment'与n-to-n-Table"Participation"连接起来。varAppointmentsAndParticipations=appointments.Join(participations,//要连接的其他表a=>a.Id,//在第一个表中键入p=>p.AppointmentId,//在第二个表中键入(a,p)=>new{Appointment=a,PeopleId=p.PeopleId}//建立新行);foreach(variteminAppointmentsAndParticipations){//结果应该是约会和peopleId。我们得到了"Appointment.Count*Participations.Count"行Console.WriteLine(item.Appointment.Id.ToString().PadLeft(5)+","+item.Appointment.Subject.PadLeft(15)+","+item.PeopleId);}Console.WriteLine("*****JOINpeople*****");//我们需要将属于Id的人加入参与varAppointmentsAndPeople=AppointmentsAndParticipations.Join(people,a=>a.PeopleId,//类似于1stjoin...p=>p.Id,(a,p)=>new{Appointment=a.Appointment,People=p});foreach(VariteminAppointmentsAndPeople){Console.WriteLine(item.Appointment.Id.ToString().PadLeft(5)+","+item.Appointment.Subject.PadLeft(15)+","+item.People.姓名+""+item.People.Surname);}Console.WriteLine("*****将行分组*****");//现在我们要将行分组回约会级别。我们按Appointment和People进行分组varAppointmentPools=AppointmentsAndPeople.GroupBy(key=>key.Appointment,//选择“列”作为键group=>group.People,//选择将转换为单个值的“列”(如计数、总和、最大值..或者在您的情况下为string.join())(key,group)=>new//构建输出对象..{Id=key.Id,Subject=key.Subject,Participants=string.Join(",",group.Select(s=>s.Name+""+s.Surname))});foreach(AppointmentPools中的var项目){Console.WriteLine("Id:"+item.Id+",主题:"+item.Subject+",参与者:"+item.Participants);}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
