Trong khi tìm kiếm câu trả lời cho câu hỏi này, tôi đã gặp phải những câu hỏi tương tự sử dụng LINQ nhưng tôi chưa thể hiểu hết về chúng (và do đó, thực hiện chúng), vì tôi không quen với nó. Những gì tôi muốn, về cơ bản, là đây:
- Kiểm tra xem có phần tử nào trong danh sách chứa một chuỗi cụ thể không.
- Nếu có, hãy lấy phần tử đó.
Tôi thực sự không biết làm thế nào tôi sẽ làm điều đó. Những gì tôi có thể đưa ra là điều này (tất nhiên không hoạt động):
if (myList.Contains(myString))
string element = myList.ElementAt(myList.IndexOf(myString));
Tôi biết TẠI SAO nó không hoạt động:
myList.Contains()
không trả vềtrue
, vì nó sẽ kiểm tra xem toàn bộ thành phần của danh sách có khớp với chuỗi tôi đã chỉ định hay không.myList.IndexOf()
sẽ không tìm thấy sự xuất hiện, vì, vì nó là trường hợp một lần nữa, nó sẽ kiểm tra một phần tử khớp với chuỗi.
Tuy nhiên, tôi không biết làm thế nào để giải quyết vấn đề này, nhưng tôi cho rằng tôi sẽ phải sử dụng LINQ như được đề xuất trong các câu hỏi tương tự với tôi. Điều đó đang được nói, nếu đó là trường hợp ở đây, tôi muốn người trả lời giải thích cho tôi về việc sử dụng LINQ trong ví dụ của họ (như tôi đã nói, tôi đã không bận tâm đến nó trong thời gian sử dụng C #). Cảm ơn các bạn trước (và các cô gái?).
EDIT: Tôi đã đưa ra một giải pháp; chỉ cần lặp qua danh sách, kiểm tra xem phần tử hiện tại có chứa chuỗi không và sau đó đặt chuỗi bằng với phần tử hiện tại. Tôi đang tự hỏi, mặc dù, có cách nào hiệu quả hơn thế này?
string myString = "bla";
string element = "";
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Contains(myString))
element = myList[i];
}
myString
, trong vòng lặp hiện tại của bạn, bạn sẽ nhận được phần tử cuối cùng. Nó phụ thuộc vào bạn nếu bạn muốn tìm cái đầu tiên hay cái cuối cùng, nếu bạn chỉ muốn tìm cái đầu tiên, sau đó phá vỡ vòng lặp sau khi tìm thấy vật phẩm.