Usando Linq para devolver una cadena separada por comas

77

Tengo una clase en mi aplicación

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

Quiero escribir una consulta de linq que pueda devolverme una lista de ProductIds en un formato separado por comas donde ProductType es igual a cierto número.

Intenté usar string.join con mi declaración Linq pero no pareció funcionar.

Mako
fuente

Respuestas:

232
var s = string.Join(",", products.Where(p => p.ProductType == someType)
                                 .Select(p => p.ProductId.ToString()));
Rey rey
fuente
12
Ni siquiera 1 minuto completado :)
Sriram Sakthivel
8
@SriramSakthivel Sé que muchas personas aquí siempre intentan responder lo más rápido posible :), solo soy un aprendiz en comparación con ellos :)
King King
¿Cómo seleccionaría varias columnas?
jazzBox
1
@DougDexter no estoy seguro de lo que quiso decir en este contexto. La pregunta del OP es bastante específica sobre la obtención de una cadena con algunos valores separados por comas. Por lo tanto, el resultado Selectdebe ser a stringo, de lo contrario ToString(), se llamará a cada elemento para obtener una cadena. Si selecciona varias propiedades (como las entiende usted como columnas), esas propiedades aún deben combinarse de alguna manera para formar una cadena. Entonces ese es el punto no claro. Depende más de cómo desee que se formen los datos.
King King
1
@jazzBox para seleccionar varias columnas, intente lo siguiente: string.Join (",", products.Where (p => p.ProductType == someType) .Select (p => $ "ID: {p.ProductId.ToString ( )} Nombre: {p.ProductName.ToString ()} "));
Ryan Shripat