Ψάχνοντας για μια απάντηση σε αυτή την ερώτηση, έχω συναντήσει παρόμοιες που χρησιμοποιούν το LINQ, αλλά δεν μπόρεσα να τις κατανοήσω πλήρως (και συνεπώς να τις υλοποιήσω), καθώς δεν είμαι εξοικειωμένος με αυτό. Αυτό που θα ήθελα να κάνω, βασικά, είναι το εξής:
Ειλικρινά δεν ξέρω πώς θα το έκανα αυτό. Αυτό που μπορώ να σκεφτώ είναι το εξής (δεν λειτουργεί, φυσικά):
if (myList.Contains(myString))
string element = myList.ElementAt(myList.IndexOf(myString));
Ξέρω γιατί δεν λειτουργεί:
true
, αφού θα ελέγξει αν ένα ολόκληρο στοιχείο της λίστας ταιριάζει με το αλφαριθμητικό που έχω ορίσει.myList.IndexOf()
δεν θα βρει μια εμφάνιση, αφού, όπως συμβαίνει και πάλι, θα ελέγξει για ένα στοιχείο που ταιριάζει με το αλφαριθμητικό.Ακόμα, δεν έχω ιδέα πώς να λύσω αυτό το πρόβλημα, αλλά υποθέτω ότι θα πρέπει να χρησιμοποιήσω το LINQ, όπως προτείνεται σε παρόμοιες ερωτήσεις με τη δική μου. Τούτου λεχθέντος, αν αυτό'είναι η περίπτωση εδώ, θα ήθελα ο απαντών να μου εξηγήσει τη χρήση του LINQ στο παράδειγμά του (όπως είπα, δεν έχω'ασχοληθεί με αυτό στο χρόνο μου με τη C#). Σας ευχαριστώ εκ των προτέρων παιδιά (και κορίτσια;).
EDIT: Έχω καταλήξει σε μια λύση- απλά κάντε βρόχο στη λίστα, ελέγξτε αν το τρέχον στοιχείο περιέχει το αλφαριθμητικό και στη συνέχεια ορίστε ένα αλφαριθμητικό ίσο με το τρέχον στοιχείο. Αναρωτιέμαι, όμως, υπάρχει πιο αποτελεσματικός τρόπος από αυτόν;
string myString = "bla";
string element = "";
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Contains(myString))
element = myList[i];
}
Θα πρέπει να μπορείτε να χρησιμοποιήσετε την Linq εδώ:
var matchingvalues = myList
.Where(stringToCheck => stringToCheck.Contains(myString));
Αν θέλετε απλώς να επιστρέψετε το πρώτο στοιχείο που ταιριάζει:
var match = myList
.FirstOrDefault(stringToCheck => stringToCheck.Contains(myString));
if(match != null)
//Do stuff
for (int i = 0; i < myList.Length; i++)
{
if (myList[i].Contains(myString)) // (you use the word "contains". either equals or indexof might be appropriate)
{
return i;
}
}
Οι βρόχοι της παλιάς μόδας είναι σχεδόν πάντα οι ταχύτεροι.