2012-02-09 44 views
18

Tôi có truy vấn sau đây:Thêm các mục vào danh sách từ LINQ var

public class CheckItems 
    { 
     public String Description { get; set; } 
     public String ActualDate { get; set; } 
     public String TargetDate { get; set; } 
     public String Value { get; set; } 
    } 



    List<CheckItems> vendlist = new List<CheckItems>(); 

    var vnlist = (from up in spcall 
       where up.Caption == "Contacted" 
         select new CheckItems 
         { 
          Description = up.Caption, 
          TargetDate = string.Format("{0:MM/dd/yyyy}", up.TargetDate), 
          ActualDate = string.Format("{0:MM/dd/yyyy}", up.ActualDate), 
          Value = up.Value 
         }).ToList(); 

// Tiếp theo, khi tôi cố gắng thêm vnlist để vendlist, tôi nhận được một lỗi như tôi không thể thêm video này vào danh sách tôi nhận được và lỗi nói rằng tôi có một số đối số không hợp lệ

  vendlist.Add(vnlist); 
+1

Bạn có thể xóa cuộc gọi .ToList. AddRange mất một số đếm, và nó sẽ tự nó liệt kê tất cả. ToList đang tạo danh sách, điền vào danh sách, và ngay lập tức loại bỏ nó. Tại sao lại lãng phí thời gian trên đó. – Servy

Trả lời

28

Nếu bạn cần thêm bất kỳ bộ sưu tập IEnumerable các yếu tố vào danh sách bạn cần phải sử dụng AddRange.

vendlist.AddRange(vnlist); 
+0

Không chỉ là một "mảng" nhưng bất kỳ IEnumerable. –

+0

Đúng, đó là ý tôi. THanks, sửa chữa. – Samich

3

Tôi nghĩ bạn cố gắng thêm danh sách hoàn chỉnh thay vì một cá thể CheckItems. Tôi không có một biên dịch C# ở đây nhưng có lẽ AddRange thay vì Thêm công trình:

vendlist.AddRange(vnlist); 
4

Hoặc kết hợp chúng ...

vendlist.AddRange((from up in spcall 
       where up.Caption == "Contacted" 
         select new CheckItems 
         { 
          Description = up.Caption, 
          TargetDate = string.Format("{0:MM/dd/yyyy}", up.TargetDate), 
          ActualDate = string.Format("{0:MM/dd/yyyy}", up.ActualDate), 
          Value = up.Value 
         }).ToList()); 
0

Dưới đây là một cách đơn giản để làm điều này:

List<CheckItems> vendlist = new List<CheckItems>(); 

var vnlist = from up in spcall 
       where up.Caption == "Contacted" 
       select new 
        { 
         up.Caption, 
         up.TargetDate, 
         up.ActualDate, 
         up.Value 
        }; 

foreach (var item in vnlist) 
      { 
       CheckItems temp = new CheckItems(); 
       temp.Description = item.Caption; 
       temp.TargetDate = string.Format("{0:MM/dd/yyyy}", item.TargetDate); 
       temp.ActualDate = string.Format("{0:MM/dd/yyyy}", item.ActualDate); 
       temp.Value = item.Value; 

       vendlist.Add(temp); 
      } 
Các vấn đề liên quan