简体   繁体   English

匿名类型的字符串聚合

[英]Aggregate of string on anonymous type

I want to concat multiple string value into single string with comma separated,i tried using aggregate function but it shows cannot convert string to how to fix this issue,我想将多个字符串值连接成逗号分隔的单个字符串,我尝试使用聚合 function 但它显示无法将字符串转换为如何解决此问题,

I tried below code我试过下面的代码

var res = (from e in WYNKContext.SurgeryAssigned.Where(x => x.CmpID == cmpid && x.IsCancelled == false)
                       select new
                       {
                           ID = e.SAID,
                           UIN = e.UIN,
                           SurgeryDate = e.SurgeryDate,
                           SurgeryID = e.SurgeryID,
                           Surgery = ((from st in WYNKContext.SurgeryTran.                         
                                       Where(x => x.SurgeryID ==  e.SurgeryID)
                                       select new
                                       {
                                             desc = icdmaster
                                                  .Where(x => x.ID == 
                                                   st.IcdSpecialityCode).Select(x => 
                                                   x.SpecialityDescription).FirstOrDefault(),
                                       }).ToList()).Aggregate((a, b) => a.desc + "," + b.desc),

                                     }).ToList();

I want Output like inside surgery property like = string1,string 2,etc....我想要 Output 像里面的手术属性像 = string1,string 2 等等....

without using aggregate i am getting as count in Surgery Property在不使用聚合的情况下,我在手术属性中得到了计数

 var res = (from e in WYNKContext.SurgeryAssigned.Where(x => x.CmpID == cmpid && x.IsCancelled == false)
                           select new
                           {
                               ID = e.SAID,
                               UIN = e.UIN,
                               SurgeryDate = e.SurgeryDate,
                               SurgeryID = e.SurgeryID,
                               Surgery = (from st in WYNKContext.SurgeryTran.Where(x => x.SurgeryID == e.SurgeryID)
                                      select new
                                      {
                                          icd = icdmaster.Where(x => x.ID == st.IcdSpecialityCode).Select(x => x.SpecialityDescription).FirstOrDefault(),
                                       }).ToList(),

                                         }).ToList();

also tried string join:还尝试了字符串连接:

   Surgery = string.Join(",", (from st in WYNKContext.SurgeryTran.Where(x => x.SurgeryID == e.SurgeryID)
                              select new
                              {
                                  icd = icdmaster.Where(x => x.ID == st.IcdSpecialityCode).Select(x => x.SpecialityDescription).FirstOrDefault(),
                              }).ToList()),

but in output i am getting like this但是在 output 中,我变得像这样

Surgery ={ icd = CORNEA },{ icd = CATARACT/IOL }

can some one tell what i did wrong in string.join.....有人可以告诉我在 string.join 中做错了什么.....

The string class has a static method named Join , which takes in a collection of items and a string to join them with, which should work for you here. string class 有一个名为Joinstatic方法,它接受一个项目集合和一个用于连接它们的字符串,在这里应该对你有用。

If I'm reading your code correctly, it would look something like this:如果我正确阅读了您的代码,它将如下所示:

Surgery = string.Join(",", WYNKContext.SurgeryTran
    .Where(surgTran => surgTran.SurgeryID == e.SurgeryID)
    .Select(surgTran => icdmaster
        .Where(icd => icd.ID == surgTran.IcdSpecialityCode)
        .Select(icd => icd.SpecialityDescription)
        .FirstOrDefault())),

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM