2011-09-28 4 views
1

J'essaie d'importer des données dans une nouvelle base de données, mais certaines colonnes de l'ancienne base de données sont null.LinQ Query Where Condition

Dans l'une de mes méthodes j'utilise la requête ci-dessous pour obtenir les enregistrements, comme je l'ai déjà dit il y a une colonne dans la ligne qui a une valeur nulle pour certains enregistrements.

Guid nameGuid= new guid('CCECE54B-EE14-4463-8A0B-02C72679334A') 

MySubQuery = from a in MainQuery 
       where a.Table1.Id.Equals(nameGuid) 
     Select a; 

Je veux vérifier la valeur a.Table1.Id, si elle est égale à nulle, alors je veux toujours la ligne mais, ignorer l'état où.

Toute suggestion pour utiliser l'opérateur Terinary dans Linq Query ou toute autre approche pour ma tâche.

Répondre

7

Sons comme vous voulez:

MySubQuery = from a in MainQuery 
      where a.TableId.Id Is Nothing OrElse a.Table1.Id.Equals(nameGuid) 

C'est mon entrée VB est correct ... en C# Je venais d'écrire:

var query = from a in mainQuery 
      where a.TableId.Id == null || a.TableId.Id == nameGuid 
      select a; 

ou en utilisant la méthode d'extension directement:

var query = mainQuery.Where(a => a.TableId.Id == null || 
           a.TableId.Id == nameGuid); 
1

Et à propos de:

MySubQuery = from a in MainQuery 
      where a.Table1.Id == null || a.Table1.Id.Equals(nameGuid) 
      select a; 

Ou est-ce qu'il me manque quelque chose?

EDIT:

La chose que je suis absent est ce que M. Skeet repéré. C'est VB. Eh bien, je vais laisser cela rester comme un échantillon C#.

0
var datarows = (from row in dt.AsEnumerable() 
          where row.Field<Guid>("Id") == new 
       Guid(ddlCode.SelectedValue.ToString()) 
          select row); 

Après que

 DataTable newDt=datarows.CopyToDataTable(); 
    var sampleName=newDt.Rows[0]["SampleName"].ToString();