Sử dụng Linq để trả về một chuỗi được phân tách bằng dấu phẩy


77

Tôi có một lớp học trong ứng dụng của mình

public class ProductInfo
{
  public int ProductId {get;set;}
  public int ProductType{get;set;}
}

Tôi muốn viết một truy vấn linq có thể trả về cho tôi danh sách các ProductIds ở định dạng được phân tách bằng dấu phẩy trong đó ProductType bằng một số nhất định?

Tôi đã thử sử dụng string.join với câu lệnh Linq của mình nhưng nó dường như không hoạt động.

Câu trả lời:


232
var s = string.Join(",", products.Where(p => p.ProductType == someType)
                                 .Select(p => p.ProductId.ToString()));

12
Thậm chí 1 phút hoàn thành :)
Sriram Sakthivel

8
@SriramSakthivel Tôi biết nhiều người dân nơi đây luôn cố gắng trả lời càng nhanh càng tốt :), Tôi chỉ là một người học so với họ :)
Vua Vua

Làm thế nào bạn sẽ chọn nhiều cột?
jazzBox

1
@DougDexter không chắc ý của bạn trong ngữ cảnh này. Câu hỏi của OP khá cụ thể về việc lấy một chuỗi với một số giá trị được phân tách bằng dấu phẩy. Vì vậy, kết quả trong Selectphải là a stringhoặc nếu không thì ToString()trên mỗi mục sẽ được gọi để nhận một chuỗi. Nếu bạn chọn nhiều thuộc tính (theo bạn hiểu là cột), các thuộc tính đó vẫn cần được kết hợp bằng cách nào đó để tạo thành một chuỗi. Vì vậy, đó là điểm không rõ ràng. Nó phụ thuộc nhiều hơn vào cách bạn muốn dữ liệu được định hình.
King King

1
@jazzBox để chọn nhiều cột, hãy thử như sau: string.Join (",", products.Where (p => p.ProductType == someType) .Select (p => $ "ID: {p.ProductId.ToString ( )} Tên: {p.ProductName.ToString ()} "));
Ryan Shripat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.