如何在linq中进行concat或group by?我得到倍数值想要通过','来连接数据。

时间:2017-07-06 12:19:41

标签: c# .net linq web-services asp.net-web-api

我的查询:

var s = entities.Doctors.SingleOrDefault(x => x.AreaId == id);
                    var z = (from x in entities.Doctors
                             join y in entities.Areas on x.AreaId equals y.AreaId
                             join s1 in entities.Availabilties on s.D_Id equals s1.DoctorId
                             join s2 in entities.Eductions on s.D_Id equals s2.DoctorId
                             join s3 in entities.DoctorSpecialities on s.D_Id equals s3.DoctorId 
                             join s4 in entities.Specialities on s3.SpecialityId equals s4.SpecialityId
                             join s5 in entities.DaysDetails on s1.DaysId equals s5.DaysId
                             join s6 in entities.Degrees on s2.DegreeId equals s6.DegreeId
                             where x.AreaId.Equals(id)
                             select new DoctorDisplay
                             {
                                 D_name = x.D_Name,
                                 D_address = x.D_Address,
                                 D_Area = y.AreaName,
                                 D_Contact1 = x.D_Contactone, 
                                 D_Contact2 = x.D_Contacttwo,
                                 D_fax = x.D_Faxno,
                                 D_SpecialityName = s4.SpecialityName,
                                 D_Availstarttime = s1.StartTime,
                                 D_Availlasttime = s1.LastTime,
                                 D_Availday= s5.DaysName,
                                 D_DegreeName = s6.DegreeName,
                                 D_Awards = x.D_Address,
                                 D_Status = x.D_Status
                              }).ToList();

****获取输出****

[{"D_name":"Shanu","D_address":"block123","D_Area":"Manama","D_Contact1":"123","D_Contact2":"456","D_fax":"789","D_SpecialityName":"Dietician","D_Availstarttime":"9PM","D_Availlasttime":"11PM","D_Availday":"Sunday","D_DegreeName":"MBBS","D_Awards":"block123","D_Status":"Available"},{"D_name":"Shanu","D_address":"block123","D_Area":"Manama","D_Contact1":"123","D_Contact2":"456","D_fax":"789","D_SpecialityName":"Dietician","D_Availstarttime":"9PM","D_Availlasttime":"11PM","D_Availday":"Sunday","D_DegreeName":"Dentistdegree","D_Awards":"block123","D_Status":"Available"},{"D_name":"Shanu","D_address":"block123","D_Area":"Manama","D_Contact1":"123","D_Contact2":"456","D_fax":"789","D_SpecialityName":"Ayurveda","D_Availstarttime":"9PM","D_Availlasttime":"11PM","D_Availday":"Sunday","D_DegreeName":"MBBS","D_Awards":"block123","D_Status":"Available"},{"D_name":"Shanu","D_address":"block123","D_Area":"Manama","D_Contact1":"123","D_Contact2":"456","D_fax":"789","D_SpecialityName":"Ayurveda","D_Availstarttime":"9PM","D_Availlasttime":"11PM","D_Availday":"Sunday","D_DegreeName":"Dentistdegree","D_Awards":"block123","D_Status":"Available"},{"D_name":"Shanu","D_address":"block123","D_Area":"Manama","D_Contact1":"123","D_Contact2":"456","D_fax":"789","D_SpecialityName":"Dietician","D_Availstarttime":"4AM","D_Availlasttime":"11AM","D_Availday":"Monday","D_DegreeName":"MBBS","D_Awards":"block123","D_Status":"Available"},{"D_name":"Shanu","D_address":"block123","D_Area":"Manama","D_Contact1":"123","D_Contact2":"456","D_fax":"789","D_SpecialityName":"Dietician","D_Availstarttime":"4AM","D_Availlasttime":"11AM","D_Availday":"Monday","D_DegreeName":"Dentistdegree","D_Awards":"block123","D_Status":"Available"},{"D_name":"Shanu","D_address":"block123","D_Area":"Manama","D_Contact1":"123","D_Contact2":"456","D_fax":"789","D_SpecialityName":"Ayurveda","D_Availstarttime":"4AM","D_Availlasttime":"11AM","D_Availday":"Monday","D_DegreeName":"MBBS","D_Awards":"block123","D_Status":"Available"},{"D_name":"Shanu","D_address":"block123","D_Area":"Manama","D_Contact1":"123","D_Contact2":"456","D_fax":"789","D_SpecialityName":"Ayurveda","D_Availstarttime":"4AM","D_Availlasttime":"11AM","D_Availday":"Monday","D_DegreeName":"Dentistdegree","D_Awards":"block123","D_Status":"Available"}]

基于教育ID,DoctorspecialitiesID,Avaibilities Id,的Group_concat Image of Input and desire Output

1 个答案:

答案 0 :(得分:0)

看着你的示例输出,它看起来不像你想要"通过''"""尽可能多地将其转换为JSON。

在这种情况下,您可能最好使用像Newtonsoft的JSON.NET这样的工具

更新(根据评论): 假设doctors是有问题的查询结果。

var output = 
    from d in doctors
     group d by new { d.D_NAME, d.D_Area } into dg
     select new DoctorDisplay
     {
        D_NAME = dg.Key.D_NAME,
        D_Area = dg.Key.D_Area,
        D_SpecialityName = String.Join(",", dg.Select(d => d.D_SpecialityName).Distinct()),
        D_DegreeName = String.Join(",", dg.Select(d => d.D_DegreeName).Distinct())
    };