2009-12-30 6 views
2

J'ai ce code qui renvoie un ID de cas à partir d'une table Alleged Perpetrator. Cette table a également une colonne "LastName". Je veux chercher sur caseID et retourner LastName mais je ne sais pas comment le coder. J'ai été sur le site de microsoft à la recherche d'exemples LINQ to SQL mais je n'arrive toujours pas à le comprendre. Toute aide serait grandement appréciée!Linq Query Question

Ken

public static class AllegedPerpetratorRepository 
{ 
    public static IQueryable<AllegedPerpetrator> GetByCaseID(
     this IQueryable<AllegedPerpetrator> source, 
     int caseID) 
    { 
     return (from s in source where s.CaseID.Equals(caseID) select s); 
    } 
} 

Répondre

6

La fin devrait être:

. . . select s.LastName);

Modifier:

suggestion Ahmed et la solution de Jeroen:

public static class AllegedPerpetratorRepository 
{ 
    public static IEnumerable<string> GetByCaseID(
     this IQueryable<AllegedPerpetrator> source, 
     int caseID) 
    { 
     return (from s in source where s.CaseID.Equals(caseID) select s.LastName); 
    } 
} 
+4

De plus, le type de retour de la méthode passerait au type 'LastName', vraisemblablement à' string' –

+1

Le type de fonction ne devrait pas être une chaîne. Il s'agit d'un IEnumerable ou vous devez appliquer .First() au retour. –

0

Avez-vous créé un LINQ à la classe SQL à partir de votre base de données en utilisant l'outil de mappeur Visual Studio?

Vous pouvez ajouter un 'nouvel élément', puis ajouter une classe LINQ to SQL en fonction de votre schéma de base de données. L'outil va générer les classes à partir des tables pour vous.

Ensuite, vous pouvez utiliser ces classes qui représentent les colonnes et les tables de votre base de données (une classe par table) pour utiliser LINQ.

Il y a quelques bons tutoriels sur LINQ to SQL si vous google.

0
var perps = dataContext.AllegedPerpetrator.Where(p=>p.CaseID == caseIdValue) 
      .Select(p=>p.LastName) 

CaseIdValue est ce que vous passez =

0

S'il y a un et un seul enregistrement pour l'identification de cas donné, vous pouvez utiliser l'expression unique

 
var lastName = dataContext.AllegedPerpetrator.SingleOrDefault(i => i.CaseID == caseId).LastName