2012-05-10 36 views
7

Nếu tôi có một danh sách của một số lớp như thế này:Chuỗi Tham Sử dụng một biểu thức Lambda

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 }} 
}; 

một biểu thức Lambda có thể được sử dụng để chuỗi tham gia các thuộc tính trong danh sách các lớp như thế này:

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

Trả lời

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

Bạn cũng có thể ghi đè lên ToString.

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

... và sau đó gọi là chết đơn giản (Net 4.0):

string.Join(", ", newInfo); 
+0

Nếu nó ở nơi dự án của tôi, tôi sẽ đi với một cái gì đó như thế này. – asawyer

+0

Cảm ơn bạn Austin! –

+0

+1, chắc chắn khuyên bạn nên ghi đè 'ToString()' trong trường hợp này. – yamen

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

Bạn có thể sử dụng như là như sau

Bạn có thể Return một loại cụ thể như

này
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 
         }) 

Hoặc Bạn có thể truy xuất loại vô danh như thế này

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 

       }) 
Các vấn đề liên quan