Ho una lista che creo da un DataTabe che contiene solo una colonna. Diciamo che la colonna si chiama MyColumn. Ogni elemento nell'elenco è un array di oggetti che contiene le mie colonne, in questo caso solo uno (MyColumn). Qual è il modo più elegante per verificare se quell'array di oggetti contiene un determinato valore?Cerca in una lista <DataRow>?
risposta
var searchValue = SOME_VALUE;
var result = list.Where(row => row["MyColumn"].Equals(searchValue)); // returns collection of DataRows containing needed value
var resultBool = list.Any(row => row["MyColumn"].Equals(searchValue)); // checks, if any DataRows containing needed value exists
http://dotnetperls.com/list-find-methods ha qualcosa su esiste & trovare.
Beh, dipende da quale versione C# e .NET ci si trova, per 3,5 si potrebbe farlo con LINQ:
var qualiyfyingRows =
from row in rows
where Equals(row["MyColumn"], value)
select row;
// We can see if we found any at all through.
bool valueFound = qualifyingRows.FirstOrDefault() != null;
che vi darà entrambe le righe che corrispondono e un bool che ti dice se hai trovato qualcosa.
Tuttavia, se non si dispone di LINQ o dei metodi di estensione che vengono con esso si dovrà cercare la lista "Old Skool":
DataRow matchingRow = null;
foreach (DataRow row in rows)
{
if (Equals(row["MyColumn"], value))
{
matchingRow = row;
break;
}
}
bool valueFound = matchingRow != null;
che vi darà la prima riga che corrisponde, esso ovviamente può essere modificato per trovare tutte le righe che corrispondono, il che renderebbe i due esempi più o meno uguali.
La versione LINQ ha una grande differenza, tuttavia, l'IEnumerable che si ottiene viene posticipato, quindi il calcolo non verrà eseguito finché non si annoverano effettivamente i membri. Non so abbastanza su DataRow o sulla tua applicazione per sapere se questo può essere un problema o no, ma è stato un problema in un pezzo del mio codice che trattava di NHibernate. Fondamentalmente stavo enumerando una sequenza che i membri non erano più validi.
È possibile creare facilmente IEnumerables differiti tramite lo iterators in C# 2.0 e versioni successive.
Se doveste fare spesso questa ricerca, penso che non sia conveniente scrivere ogni volta LINQ-expression. Mi piacerebbe scrivere estensione-metodo come questo:
private static bool ContainsValue(this List<DataRow> list, object value)
{
return list.Any(dataRow => dataRow["MyColumn"].Equals(value));
}
E dopo che la ricerca marca:
if (list.ContainsValue("Value"))
forse ho letto male questo, ma sembra che i dati sono attualmente in una List<object[]>
e non in un DataTable in modo da ottenere gli elementi che corrispondono a determinati criteri si potrebbe fare qualcosa di simile:
var matched = items.Where(objArray => objArray.Contains(value));
articoli sarebbero tua lista di oggetti []: s e abbinati sarebbe un IEnumerable []> con l'oggetto []: S con il valore in.
No, è in un elenco
- 1. Come si crea una lista <T> da una lista ordinata <int, T>?
- 2. spingere una stringa delimitata in una lista <int>
- 3. È Lista <T> una lista collegata?
- 4. Lista dizionario <chiave, Lista <Value>> - C#
- 5. Raggruppa una lista <object[]>
- 6. Lista <Object> e Lista <?>
- 7. Come si cerca una collezione TList <T> generica?
- 8. Lista <?> vs Lista <? si estende Oggetto>
- 9. Convertire una lista <T> in una ObservableCollection <T>
- 10. Cerca file in una cartella
- 11. Cinetica che scorre una lista <Rectangle> in XNA
- 12. Come avviare una lista <Task> in parallelo?
- 13. Come compilare una lista <string> in XAML?
- 14. Cerca una parola in una stringa utilizzando la funzione php
- 15. Converti lista <boolean> in stringa
- 16. Lista Shuffle <T>
- 17. Inizializza lista <Elenco <Integer>> in Java
- 18. Convertire la lista <string> nella lista <int> in C#
- 19. Cerca un elenco utilizzando una stringa
- 20. Lista Vuoto <MultipartFile> quando si cerca di caricare molti file in primavera con ng file-upload
- 21. Come posso passare una lista <Interface> su WCF?
- 22. Implementazione di una lista con unique_ptr <>?
- 23. Rimuovere i duplicati da una lista <int>
- 24. Ordina una query Lista <T> utilizzando espressioni
- 25. Scala - Converti Lista di liste in una singola Lista: Lista [Lista [A]] in Lista [A]
- 26. Lista Converti <int> alla lista stringa delimitata
- 27. Cerca una matrice JSON in Oracle
- 28. Cerca caratteri speciali (/ * - + _ @ & $ #%) in una stringa?
- 29. Cerca hash in una matrice per valore
- 30. jQuery Cerca testo in una variabile?
La cosa è, la lista contiene una matrice che ho bisogno di cercare in ... quindi penso che non devo cercare la lista, ma la matrice (s) all'interno della lista. – grady