2017-06-14 1 views
0

J'ai une donnée dans mon tableau Brands qui contient Smart ou Sun. Le programme télécharge un fichier CSV, mais avant de télécharger le csv le programme doit vérifier dans la colonne Brands de csv s'il y a une ligne qui contient non plus Smart ou Sun jusqu'à présent je l'ai faitComment comparer DataTable et une chaîne s'il existe

DataTable dtCsv = new DataTable(); 
int matchCount; 
using (CsvReader csvReader = new CsvReader(new StreamReader(fs), true)) 
    { 
     dtCsv.Load(csvReader); 
    } 

if (dtCsv.Select("BATCH_LEADS<>'" + batch.LeadBatch + "'").Count() != 0) return false; 

foreach (Brand brands in BrandList) 
{ 
     matchCount = dtCsv.Select("BRAND<>'" + brands.BrandName + "'").Count(); 
} 

mais je sais ce que im Ce comportement est incorrect car le matchCount contiendra le nombre d'échecs dans la colonne. Aidez-moi, s'il vous plaît. Im en utilisant C# et ceci est un projet asp.net MVC

+0

Ceci est une très mauvaise question. S'il vous plaît lire la FAQ pour savoir comment écrire de bonnes questions - des questions que nous pouvons vous aider. –

+0

Le contenu CSV n'est toujours pas clair - veuillez ajouter plus de détails pour révéler les erreurs d'un code donné. Lisez [ask] & [mcve] pour savoir ce que vous devez inclure. –

+0

@SamAxe désolé mon explication a été supprimée par moi. –

Répondre

0

Au début, je ne suis pas au courant que la table de données utilise l'instruction query like. Alors je l'ai fait comme ça. Et cela fonctionne bien pour moi

int matchCount = 0; 
using (MappingDBUnitOfWork muw = new MappingDBUnitOfWork(new MappingEntities())) 
      { 
       var BrandList = muw.BrandRepository.GetAll(); 
       foreach (Brand brands in BrandList) 
       { 
        matchCount += dtCsv.Select("BRAND ='" + brands.BrandName + "'").Count(); 
       } 
      } 

      if (matchCount != dtCsv.Rows.Count) return false; 
1

Ci-dessous est pas le code exact, mais je l'espère montrer la bonne direction. C'est Une fois que nous avons obtenu les données du csv comme datatable, nous pouvons aussi vérifier comme ci-dessous:

Exemple de code:

DataTable dtCsv = new DataTable(); 
int matchCount; 
using (CsvReader csvReader = new CsvReader(new StreamReader(fs), true)) 
    { 
     dtCsv.Load(csvReader); 
    } 

    for (int rowcount = 0; rowcount < dtCsv.Rows.Count; rowcount++) 
    { 
      //brands is the column name in excel 
     if(dtCsv.Rows[rowcount]["brands"].ToString() != "sum" || dtCsv.Rows[rowcount]["brands"].ToString() != "smart") 
     { 

       //do some logic 
      } 
    } 

espérons qu'il a été utile

Merci

Karthik