Використання Linq для повернення рядка, розділеного комами


77

У моїй програмі є клас

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

Я хочу написати запит linq, який може повернути мені список ProductIds у форматі, розділеному комами, де ProductType дорівнює певному числу?

Я спробував використовувати string.join із моїм висловленням Linq, але, здається, це не спрацювало.

Відповіді:


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

12
Не виконано навіть 1 хвилини :)
Шрірам Сактивель

8
@SriramSakthivel Я знаю, що багато людей тут завжди намагаються відповісти якомога швидше :), я просто навчаюся порівняно з ними :)
King King

Як би ви вибрали кілька стовпців?
jazzBox

1
@DougDexter не знає, що ви мали на увазі в цьому контексті. Питання OP досить конкретне щодо отримання рядка з деякими значеннями, розділеними комами. Отже, результат в Selectповинен бути a stringабо інакше ToString()для кожного елемента буде викликано рядок. Якщо вибрати кілька властивостей (як ви розумієте їх як стовпці), ці властивості все одно потрібно якось поєднати, щоб зробити рядок. Отже, незрозумілий момент. Це більше залежить від того, як ви хочете, щоб дані формувалися.
Кінг Кінг

1
@jazzBox, щоб вибрати кілька стовпців, спробуйте наступне: string.Join (",", products.Where (p => p.ProductType == someType). Виберіть (p => $ "ID: {p.ProductId.ToString ( )} Ім'я: {p.ProductName.ToString ()} "));
Райан Шріпат,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.