2009-12-08 39 views
5

Tôi có truy vấn LINQ trả về tất cả các lần vắng mặt cho một nhân viên. Phần đầu tiên của câu lệnh linq nhận được một danh sách cơ bản về các chi tiết nhân viên, nhưng tôi cũng trả về một danh sách các bệnh liên quan đến sự vắng mặt của IQueryable.Chuyển đổi IQueryable <object> kết quả thành chuỗi phân cách bằng dấu phẩy

Tôi muốn bằng cách nào đó chuyển đổi danh sách IQueryable đó thành danh sách được phân cách bằng dấu phẩy của các Bệnh.

Hiện nay tôi sử dụng (majorly rút gọn):

DetailsOfSickness = (
    from t2 in Illnesses 
    join ai1 in AbsenceIllnesses on t2.IllnessID equals ai1.IllnessID 
    select new { Illness = ", " + t2.IllnessName }) 

nào trả về danh sách nhưng tôi muốn kết quả như: Nhức đầu, cúm, Chuột rút .... vv Bất kỳ ý tưởng?

Trả lời

7

Bạn có thể sử dụng String.Join để tạo chuỗi phân cách bằng dấu phẩy.

string DetailsOfSickness = 
    String.Join(", ", (
     from t2 in illnesses 
     join ai1 in absenceIllnesses on t2.IllnessID equals ai1.IllnessID 
     select t2.IllnessName).ToArray()); 
+0

Tuyệt vời Rubens, cảm ơn bạn. – Fermin

+0

Chỉ cần một lưu ý, điều này sẽ không hoạt động với LINQ to Entities. – Ecyrb

+0

@Ecyrb, tại sao không? Tôi đã không cố gắng, nhưng như tôi đã bao gồm '.ToArray()' phương pháp, mà nên nhận được giá trị cơ sở dữ liệu của bạn và, sau đó, sử dụng chúng như là tham số cho 'String.Join' –

3

Something như thế này nên làm điều đó:

DetailsOfSickness = String.Join(", ", (
    from t2 in Illnesses 
    join ai1 in AbsenceIllnesses on t2.IllnessID equals ai1.IllnessID 
    select t2.IllnessName).ToArray()); 
  • Xin lưu ý, không trình biên dịch, mã không được kiểm tra.
+0

Về cơ bản những gì tôi đã viết kastermester nhưng Rubens đã ở đó đầu tiên ! Cảm ơn – Fermin

+0

Chỉ cần một lưu ý, điều này sẽ không hoạt động với LINQ to Entities. – Ecyrb

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