2010-03-16 8 views
3

Je suis en train de faire une expression lambda emboîtées comme à la suite:expressions lambda emboîtées et cultures de chaîne

textLocalizationTable.Where(
    z => z.SpokenLanguage.Any(
    x => x.FromCulture == "en-GB") 
).ToList(); 

mais je reçois l'erreur:

Member access 'System.String FromCulture' of 
'DomainModel.Entities.SpokenLanguage' not legal on type 
'System.Data.Linq.EntitySet`1[DomainModel.Entities.SpokenLanguage]. 

TextLocalization a cette relation à spokenlanguage:

[Association(OtherKey = "LocalizationID", ThisKey = "LocalizationID", Storage = "_SpokenLanguage")] 
private EntitySet<SpokenLanguage> _SpokenLanguage = new EntitySet<SpokenLanguage>(); 
public EntitySet<SpokenLanguage> SpokenLanguage 
{ 
    set { _SpokenLanguage = value; } 
    get { return _SpokenLanguage; } 
} 

Une idée de ce qui ne va pas?


J'ai essayé votre suggestion avec la même erreur.

Spokenlanguage a maintenant cette association:

internal EntityRef<TextLocalization> _TextLocalization; 
    [Association(ThisKey = "LocalizationID", OtherKey = "LocalizationID", Storage = "_TextLocalization")] 
    public TextLocalization TextLocalization 
    { 
     get { return _TextLocalization.Entity; } 
     internal set { _TextLocalization.Entity = value; LocalizationID = value.LocalizationID; } 
    } 

Sur le datacontext ceci est ajouté:

 DataLoadOptions dlo = new DataLoadOptions(); 
     dlo.LoadWith<TextLocalization>(text => text.SpokenLanguage); 
     dc.LoadOptions = dlo; 

d'autres idées? Mayby il m'a juste mal compris certaines choses fondamentales ??

+1

Est-ce vraiment une question LINQ à SQL? Cela n'a peut-être rien à voir avec les lambdas imbriqués en soi, que j'ai tendance à utiliser abondamment ... – flq

+0

Que se passe-t-il si vous essayez "textLocalizationTable.Where (z => z.SpokenLanguage.Where (x => x.FromCulture ==" en-GB "). Count()> 0) .ToList();"? –

+0

Pouvez-vous montrer la classe 'SpokenLanguage', au moins la propriété en question? – flq

Répondre

1

Le problème est définitivement un problème avec "Linq to SQL" et probablement l'association.

Voici quelques suggestions:

  • Vous ne mentionnez pas si vous utilisez le [AssociationAttribute] situé sur votre table enfant, vous en aurez besoin si ce n'est pas présente.
  • Vous devrez probablement utiliser DataLoadOptions sur votre DataContext, de sorte que la table enfant est chargée lorsque la table parent est interrogée.
  • Dans la définir la méthode d'une entité < T> propriété, j'utiliser _SpokenLanguage.Assign (valeur) au lieu de _SpokenLanguage = valeur