Verwenden von Linq zum Zurückgeben einer durch Kommas getrennten Zeichenfolge

76

Ich habe eine Klasse in meiner Bewerbung

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

Ich möchte eine linq-Abfrage schreiben, die mir eine Liste von ProductIds in einem durch Kommas getrennten Format zurückgeben kann, wobei ProductType einer bestimmten Zahl entspricht.

Ich habe versucht, string.join mit meiner Linq-Anweisung zu verwenden, aber es schien nicht zu funktionieren.

Mako
quelle

Antworten:

230
var s = string.Join(",", products.Where(p => p.ProductType == someType)
                                 .Select(p => p.ProductId.ToString()));
König König
quelle
12
Nicht einmal 1 Minute abgeschlossen :)
Sriram Sakthivel
8
@SriramSakthivel Ich weiß, dass viele Leute hier immer versuchen, so schnell wie möglich zu antworten :), ich bin nur ein Lernender im Vergleich zu ihnen :)
King King
Wie würden Sie mehrere Spalten auswählen?
JazzBox
1
@DougDexter nicht sicher, was Sie in diesem Zusammenhang gemeint haben. Die Frage des OP ist ziemlich spezifisch, wenn es darum geht, eine Zeichenfolge mit einigen durch Kommas getrennten Werten zu erhalten. Das Ergebnis in Selectsollte also ein stringoder ein anderes sein, das ToString()für jedes Element aufgerufen wird, um eine Zeichenfolge zu erhalten. Wenn Sie mehrere Eigenschaften auswählen (von Ihnen als Spalten verstanden), müssen diese Eigenschaften noch irgendwie kombiniert werden, um eine Zeichenfolge zu erstellen. Das ist also der unklare Punkt. Es hängt mehr davon ab, wie die Daten geformt werden sollen.
König König
1
@jazzBox Um mehrere Spalten auszuwählen, versuchen Sie Folgendes: string.Join (",", products.Where (p => p.ProductType == someType) .Select (p => $ "ID: {p.ProductId.ToString ( )} Name: {p.ProductName.ToString ()} "));
Ryan Shripat