2010-10-12 5 views
1

J'ai trois tables dont je reçois des informations: User, Field, FieldUserInput. Je connais déjà l'userId qui est ce que j'utilise pour savoir quels champs l'utilisateur a entré. Ensuite, je veux obtenir la valeur de ces champs que l'utilisateur a entré dans FieldUserInput.Comment dois-je écrire cela dans LINQ?

J'ai d'abord écrit cette requête dans un ancien sql simple, mais je veux utiliser autant que possible LINQ puisque c'est pour cela que j'utilise Entity Framework.

SELECT fielduserinput.field_idField, fielduserinput.userInput, fielduserinput.time 
FROM fielduserinput 
WHERE fielduserinput.userId = @userId 

Des suggestions sur la façon dont j'écrirais cela dans LINQ?

Répondre

2

Considérant que vous avez une source de données remplie de données.

var matchingRows = from rows in fielduserinput.AsEnumarable() 
        where string.compare(rows["userId"].ToString(),userID)==0 
        select rows; 
+0

Hehe - on dirait qu'il compile réellement, contrairement au mien: P –

+0

Question rapide: Pourquoi String.Compare au lieu d'utiliser '=='? –

+0

Merci! J'aime le style de celui-ci. – Phil

0
var response = fielduserinput 
       .Where(x=>x.userid == @userid) 
       .Select(x=>new { field_idfieldid = x.field_idfieldid, etc }) 
       .ToList() 
+0

Pouvez-vous expliquer ce que "fielduserinput.where" représente? Je comprends qu'il n'a pas cette méthode. – Phil

+0

Pourquoi 'ToList'? Aucune raison d'aller chercher l'ensemble des résultats si ce n'est pas nécessaire. –

+0

@Phil: 'x => x.userid == @ userid' est transformé en une fonction lambda qui retourne le résultat booléen de x.userid == @userid. Notez que pour que cela fonctionne, vous devez remplacer @userid par un vrai nom de variable. –

0
var result = from row in fielduserinput 
      where row.userId = "???" 
      select new { row.field_idField, row.userInput, ...};