Không được phép có toán tử điều kiện trong biểu thức lambda trong ForEach?Sử dụng toán tử điều kiện trong biểu thức lambda trong ForEach() trên Danh sách chung?
List<string> items = new List<string>{"Item 1", "Item 2", "Item I Care About"};
string whatICareAbout = "";
// doesn't compile :(
items.ForEach(item => item.Contains("I Care About") ?
whatICareAbout += item + "," : whatICareAbout += "");
Compilation lỗi -> "Chỉ chuyển nhượng, gọi điện thoại, tăng, sụt lần, và biểu tượng mới có thể được sử dụng như một tuyên bố"
Cố gắng sử dụng một bình thường nếu không làm việc, hoặc:
// :(
items.ForEach(item => if (item.Contains("I Care About")) {whatICareAbout += item + ", ";}
Chỉ cần không thể?
Sheesh Tôi đặc biệt ấn tượng với câu trả lời, tất cả chỉ trong vài phút hỏi :) Tôi nghĩ @SLaks trả lời ý định của câu hỏi của tôi, nhưng Tổng hợp() thổi tâm trí của tôi! :) Cảm ơn một lần nữa tất cả mọi người :) – Jamezor
Bạn đã có một biểu thức chuỗi như là một loại toán tử có điều kiện, và bạn cần một câu lệnh cho phương thức .ForEach() của bạn. Đó là lý do tại sao có lỗi biên dịch. –
@Roman - Tôi hiểu ngay bây giờ! Tôi nghĩ về một? x: y là viết tắt của if (a) {x} else {y} nhưng? trả về giá trị của x và y, mà là một chuỗi trong trường hợp này ... – Jamezor