Usuário com melhor resposta
Comparando dois array

Pergunta
-
Respostas
-
O que eu quero saber é o que voce espera como reultado.
Para fazer esse tipo de pesquisa voce pode fazer isso:
var resultado = from l in lista2 where lista1.Any(val => l.Contains(val)) select l;
isso vai criar uma extraçao somente os itens da lista2 que contem algum elemento da lista1
Aqui um exemplo completo:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { List<string> lista1 = new List<string>(); List<string> lista2 = new List<string>(); lista1.Add("Nº_Conta_Cartão1"); lista1.Add("Nº_Cartão1"); lista2.Add("Nº_Conta_Cartão1|5090180074121005"); lista2.Add("Nº_Cartão1|5090180074121013"); lista2.Add("Nº_Conta_Cartão2|235413241234"); lista2.Add("Nº_Cartão2|6746746746747"); lista2.Add("Nome Correntista|basdbabsdb asdbab sdb s"); lista2.Add("Nº_Conta_Cartão1|5635463456356"); lista2.Add("Nº_Cartão1|453345234523452345"); lista2.Add("Nº_Conta_Cartão1|676576764567"); lista2.Add("Nº_Cartão1|1111111111111111"); lista2.Add("Nº_Conta_Cartão1|7777777777777777"); var resultado = from l in lista2 where lista1.Any(val => l.Contains(val)) select l; Console.WriteLine("Entrada:"); foreach (string s in lista2) Console.WriteLine(s); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Saida:"); foreach (string s in resultado) Console.WriteLine(s); Console.ReadKey(); } } }
o resultado é esse:
Entrada: Nº_Conta_Cartão1|5090180074121005 Nº_Cartão1|5090180074121013 Nº_Conta_Cartão2|235413241234 Nº_Cartão2|6746746746747 Nome Correntista|basdbabsdb asdbab sdb s Nº_Conta_Cartão1|5635463456356 Nº_Cartão1|453345234523452345 Nº_Conta_Cartão1|676576764567 Nº_Cartão1|1111111111111111 Nº_Conta_Cartão1|7777777777777777 Saida: Nº_Conta_Cartão1|5090180074121005 Nº_Cartão1|5090180074121013 Nº_Conta_Cartão1|5635463456356 Nº_Cartão1|453345234523452345 Nº_Conta_Cartão1|676576764567 Nº_Cartão1|1111111111111111 Nº_Conta_Cartão1|7777777777777777
att
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".- Marcado como Resposta SirSmart quarta-feira, 7 de junho de 2017 18:25
Todas as Respostas
-
Voce tem que usar o Intersect
public void Linq50() { int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 }; int[] numbersB = { 1, 3, 5, 7, 8 }; var commonNumbers = numbersA.Intersect(numbersB); Console.WriteLine("Common numbers shared by both arrays:"); foreach (var n in commonNumbers) { Console.WriteLine(n); } }
fonte:https://code.msdn.microsoft.com/LINQ-Set-Operators-374f34fe#intersect1
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".- Sugerido como Resposta Cliffinho quarta-feira, 7 de junho de 2017 13:34
-
Bom dia, SirSmart. Tudo bem?
Por ser uma questão de "How to/ Customização" e não de "Break fix/Erro", sugiro a você abrir isso como uma discussão, e não como uma pergunta.
Assim você poderá, junto com a comunidade, chegar ao resultado que você espera, da melhor forma possível.
Para abrir uma discussão, faça o mesmo processo de abrir uma pergunta, mas ao invés de marcar como pergunta, marque como Discussão.
Assim:
- Editado Filipe Baqueta de Castro quarta-feira, 7 de junho de 2017 13:20
-
Desculpa, acabei esquecendo de dizer que os arrays não são exatos, estão dessa forma:
List<string> lista1 = new List<string>(); List<string> lista2 = new List<string>(); lista1.Add("Nº_Conta_Cartão1"); lista1.Add("Nº_Cartão1"); lista2.Add("Nº_Conta_Cartão1|5090180074121005"); lista2.Add("Nº_Cartão1|5090180074121013");
Obrigado
SirSmart
-
Desculpe-me Felipe,
Mas nao concordo com você. "Pergunta" serve também para saber como usar uma determinada tecnologia, no caso o Linq. Tudo aquilo que pode gerar uma "Resposta" (um codigo, um linq que dirija para uma documetaçao) deve ser categorizada como Pergunta.
"Discussão" deve ser usada somente para assuntos onde há possibilidade de diferentes respostas. Exemplo "Quando devo usar Linq", "Quais sao as tecnologias para substituir tal tecnologia", "Qual é a melhor forma de fazer um ERP". Perguntas de amplo escopo.
Pelo seu criterio, tudo vai virar discussao aqui. E o objetivo é justamente o contrario. Discussao nao permite que uma resposta seja marcada como a correta.
Voce pode nos enviar onde foi que voce viu que somente questoes de "Break fix/Erro" devem ser consideradas perguntas.
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".- Editado William John Adam TrindadeModerator quarta-feira, 7 de junho de 2017 13:59
-
Mas qual é o resultado que voce deseja obter?
att
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta". -
-
Ainda nao entendi o resultado que voce deseja obter, mas creio que o que voce quer faze nao é comparar dois arrays. O que voce quer fazer é usar um array como critério para o segundo array.
Nos de um exemplo do que voce espera obter como saida.
att
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta". -
-
Eu preciso saber o que voce quer obter como saida antes de responder, senao eu vou ter que concordar com o Felipe. Isso nao é uma questao e sim uma discussao.
Nos dê detalhes precisos do que voce quer obter e poderemos te dar uma resposta. Da forma que voce pergunta, todas as nossas repostas serao suposiçoes.
att
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta". -
Preciso obter um resultado usando o primeiro array como critério para o segundo array, como conversamos acima.
Exemplo:
"Nº_Conta_Cartão1" que está na lista1, deverá procurar se tem o "Nº_Conta_Cartão1" na lista2. Mas não pode ser procura exata, pois na lista2 temos "Nº_Cartão1|5090180074121013".
Tem como fazer isso com linq ?
Obrigado
SirSmart
-
O que eu quero saber é o que voce espera como reultado.
Para fazer esse tipo de pesquisa voce pode fazer isso:
var resultado = from l in lista2 where lista1.Any(val => l.Contains(val)) select l;
isso vai criar uma extraçao somente os itens da lista2 que contem algum elemento da lista1
Aqui um exemplo completo:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { List<string> lista1 = new List<string>(); List<string> lista2 = new List<string>(); lista1.Add("Nº_Conta_Cartão1"); lista1.Add("Nº_Cartão1"); lista2.Add("Nº_Conta_Cartão1|5090180074121005"); lista2.Add("Nº_Cartão1|5090180074121013"); lista2.Add("Nº_Conta_Cartão2|235413241234"); lista2.Add("Nº_Cartão2|6746746746747"); lista2.Add("Nome Correntista|basdbabsdb asdbab sdb s"); lista2.Add("Nº_Conta_Cartão1|5635463456356"); lista2.Add("Nº_Cartão1|453345234523452345"); lista2.Add("Nº_Conta_Cartão1|676576764567"); lista2.Add("Nº_Cartão1|1111111111111111"); lista2.Add("Nº_Conta_Cartão1|7777777777777777"); var resultado = from l in lista2 where lista1.Any(val => l.Contains(val)) select l; Console.WriteLine("Entrada:"); foreach (string s in lista2) Console.WriteLine(s); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Saida:"); foreach (string s in resultado) Console.WriteLine(s); Console.ReadKey(); } } }
o resultado é esse:
Entrada: Nº_Conta_Cartão1|5090180074121005 Nº_Cartão1|5090180074121013 Nº_Conta_Cartão2|235413241234 Nº_Cartão2|6746746746747 Nome Correntista|basdbabsdb asdbab sdb s Nº_Conta_Cartão1|5635463456356 Nº_Cartão1|453345234523452345 Nº_Conta_Cartão1|676576764567 Nº_Cartão1|1111111111111111 Nº_Conta_Cartão1|7777777777777777 Saida: Nº_Conta_Cartão1|5090180074121005 Nº_Cartão1|5090180074121013 Nº_Conta_Cartão1|5635463456356 Nº_Cartão1|453345234523452345 Nº_Conta_Cartão1|676576764567 Nº_Cartão1|1111111111111111 Nº_Conta_Cartão1|7777777777777777
att
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".- Marcado como Resposta SirSmart quarta-feira, 7 de junho de 2017 18:25