Tengo una lista de los parámetros de la siguiente manera:Comprobar si la lista contiene <t> cualquiera de otra lista
public class parameter
{
public string name {get; set;}
public string paramtype {get; set;}
public string source {get; set;}
}
IEnumerable<Parameter> parameters;
Y una matriz de cadenas que quiero comprobar que en contra.
string[] myStrings = new string[] { "one", "two"};
Quiero iterar sobre la lista de parámetros y comprobar si la propiedad fuente es igual a cualquiera de la matriz myStrings. Puedo hacer esto con foreach anidado, pero me gustaría aprender a hacerlo de una manera más agradable, ya que he estado jugando con linq y me gusta los métodos de extensión en enumerable, como dónde, etc., por lo que los foreachs anidados se sienten mal. ¿Existe una manera más elegante y preferida de linq/lambda/delegete para hacer esto?
Gracias
gracias parece ser lo que estoy buscando voy a probarlo. Necesita jugar un poco más con el lado funcional de las cosas. con respecto a la capitalización de clase y propiedades, lo hice simplemente se me olvidó cuando escribí el ejemplo anterior. – gdp
¿Por qué O (n^2)? ¿No es O (n * m) ya que estamos hablando de dos variables y no una? Como m (los parámetros) son una constante, es lo mismo que O (n). No veo cómo la intersección debería ser mucho más rápida aquí? Pero de acuerdo, Intersect tiene el potencial de ser más rápido, pero no está garantizado. – Squazz
Tiene razón en que debería ser O (n * m) - m no es una constante - es el tamaño de una de las listas, aunque en el ejemplo particular dado podría ser "2". Incluso valores constantes no son insignificantes en la práctica; para todas las longitudes de lista no triviales, el 'Intersecto' será más rápido; si las listas son trivialmente cortas, no importa de una manera u otra (en ese caso, el rendimiento probablemente no sea tu problema) de todos modos) – BrokenGlass