tenemos la siguiente configuración: Tenemos una matriz de objetos con una cadena (xml-ish pero no está normalizada) y tenemos una lista/matriz de cadenas con id .C# Linq, buscando los mismos elementos en dos listas
Tenemos que averiguar si una cadena de esa lista con id también está presente en uno de los objetos.
Aquí tenemos una configuración que hemos tratado:
public class Wrapper
{
public string MyProperty { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<Wrapper> wrappers = new List<Wrapper>()
{
new Wrapper{ MyProperty = "<flkds,dlsklkdlsqkdkqslkdlqk><id>3</id><sqjldkjlfdskjlkfjsdklfj>"},
new Wrapper{ MyProperty = "<flkds,dlsklkdlsqkdkqslkdlqk><id>2</id><sqjldkjlfdskjlkfjsdklfj>"}
};
string[] ids = { "<id>0</id>", "<id>1</id>", "<id>2</id>" };
var props = wrappers.Select(w => w.MyProperty);
var intersect = props.Intersect(ids, new MyEquilityTester());
Debugger.Break();
}
}
class MyEquilityTester: IEqualityComparer<string>
{
public bool Equals(string x, string y)
{
return x.Contains(y);
}
public int GetHashCode(string obj)
{
return obj.GetHashCode();
}
}
Editar:
Lo que esperamos es cuando hacemos un .Any()
en intersect
que se dice true
porque las envolturas tiene un objeto con un puntal que contiene <id>2</id>
, intersect
es null
.
Si estamos utilizando el método incorrecto, por favor diga. Debería funcionar lo más rápido posible. Un simple true
cuando se encuentre lo hará!
Cuál es tu pregunta, por favor? –
@DanielHilgarth He actualizado la publicación – Frederiek
Lo mejor que se puede hacer aquí es analizar el texto en 'MyProperty' con una estructura más legible/compatible con linq/mantenimiento. – devundef