简体   繁体   English

使用Lambda表达式进行字符串连接

[英]String Join Using a Lambda Expression

If I have a list of some class like this: 如果我有一个像这样的类的列表:

class Info {
    public string Name { get; set; }
    public int Count { get; set; }
}

List<Info> newInfo = new List<Info>()
{
    {new Info { Name = "ONE", Count = 1 }},
    {new Info { Name = "TWO", Count = 2 }},
    {new Info { Name = "SIX", Count = 6 }}
};

Can a Lambda expression be used to string join the attributes in the list of classes like this: 可以使用Lambda表达式来串联连接类列表中的属性,如下所示:

"ONE(1), TWO(2), SIX(6)"

string.Join(", ", newInfo.Select(i => string.Format("{0}({1})", i.Name, i.Count)))

You could also override ToString. 您也可以覆盖ToString。

class Info
{
   ....
   public override ToString()
   {
        return string.Format("{0}({1})", Name, Count);
   }
}

... and then the call is dead simple (.Net 4.0): ...然后调用很简单(.Net 4.0):

string.Join(", ", newInfo);
String.Join(", ", newInfo.Select(i=>i.Name+"("+i.Count+")") );

You Can use as like following 你可以使用如下

You can Return a specific type like this 您可以返回这样的特定类型

Patient pt =  dc.Patients.Join(dc.PatientDetails, pm => pm.PatientId, pd => pd.PatientId,
                         (pm, pd) => new
                         {
                             pmm = pm,
                             pdd = pd
                         })
                         .Where(i => i.pmm.PatientCode == patientCode && i.pmm.IsActive || i.pdd.Mobile.Contains(patientCode))
                         .Select(s => new Patient
                         {
                             PatientId = s.pmm.PatientId,
                             PatientCode = s.pmm.PatientCode,
                             DateOfBirth = s.pmm.DateOfBirth,
                             IsActive = s.pmm.IsActive,
                             UpdatedOn = s.pmm.UpdatedOn,
                             UpdatedBy = s.pmm.UpdatedBy,
                             CreatedOn = s.pmm.CreatedOn,
                             CreatedBy = s.pmm.CreatedBy
                         })

Or You can retrieve anonymous type like this 或者您可以像这样检索匿名类型

var patientDetails = dc.Patients.Join(dc.PatientDetails, pm => pm.PatientId, pd => pd.PatientId,
                 (pm, pd) => new
                 {
                     pmm = pm,
                     pdd = pd
                 })
                 .Where(i => i.pmm.PatientCode == patientCode && i.pmm.IsActive || i.pdd.Mobile.Contains(patientCode))
                 .Select(s => new 
                 {
                     PatientId = s.pmm.PatientId,
                     PatientCode = s.pmm.PatientCode,
                     DateOfBirth = s.pmm.DateOfBirth,
                     IsActive = s.pmm.IsActive,                     
                     PatientMobile = s.pdd.Mobile,
                     s.pdd.Email,
                     s.pdd.District,
                     s.pdd.Age,
                     s.pdd.SittingId

                 })

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

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