comment transformer une chaîne de caractères dans une expression linq?

Similaires: Convertir une chaîne de Linq.Expressions ou d'utiliser une chaîne de caractères comme le Sélecteur?

Un analogue de celui-ci: En passant une expression Linq comme une chaîne de caractères?

Une autre question avec la même réponse: Comment créer des dynamiques en fonction lambda expression Linq à partir d'une chaîne en C#?

Raison pour demander quelque chose qui a beaucoup de questions similaires:

La accepté de répondre à ces questions similaires est inacceptable qu'ils font tous référence à une bibliothèque à partir de 4 ans (bien qu'il a été écrit par le code maître Scott Gu) écrit pour un ancien cadre.net 3.5) , et ne fournit pas de tout, mais un lien en tant que réponse.

Il y a un moyen de le faire dans le code sans y compris l'ensemble de la bibliothèque.

Voici un exemple de code pour cette situation:

    public static void getDynamic<T>(int startingId) where T : class
    {
        string classType = typeof(T).ToString();
        string classTypeId = classType + "Id";
        using (var repo = new Repository<T>())
        {
            Build<T>(
             repo.getList(),
             b => b.classTypeId //doesn't compile, this is the heart of the issue
               //How can a string be used in this fashion to access a property in b?
            )
        }
    }

    public void Build<T>(
        List<T> items, 
        Func<T, int> value) where T : class
    {
        var Values = new List<Item>();
        Values = items.Select(f => new Item()
        {
            Id = value(f)
        }).ToList();
    }

    public class Item
    {
     public int Id { get; set; }
    }

Noter que ce n'est pas à la recherche à son tour toute une chaîne de caractères dans une expression comme

query = "x => x.id == somevalue";

Mais plutôt essayant seulement d'utiliser la chaîne comme l'accès

query = x => x.STRING;
Avez-vous exclu de faire simple réflexion pour faire de votre Func?
La réflexion donnera le type de propriété ou le nom de la propriété dans la classe T, qui est passé en. La classe T est passé en seulement une référence pour type lors de la connexion à une Entité Cadre Référentiel. Une liste de l'ensemble de la Classe T est retourné à partir du référentiel (repo.getList()). Comment réflexion aider à y compris les propriétés de la Classe T dans l'expression linq?
Votre exemple la faisait ressembler à vous le faites linq-to-objets, dans ce cas, vous pourriez saisir la valeur de la propriété reflectively. Mais depuis que vous travaillez dans un autre contexte, je ne suis pas sûr que ça marcherait. J'ai posté ma tentative ainsi, vous pouvez vérifier
Si vous souhaitez mettre un bounty sur cette question, vous devez le faire, disant que telle ou telle réponse sera bountied est stupide.
Désolé, je ne peux pas afficher une prime pour un autre 2 jours. Si je pouvais, je le ferais. Peut-être que c'est un problème, vous pouvez augmenter sur meta.

OriginalL'auteur Travis J | 2012-07-13