Je souhaite une requête EF de retourner une colonne entière, mais je souhaite choisir cette colonne avec une variable. Cela peut-il être fait? C'EST À DIRE. Utilisez une variable au lieu d'une expression Lambda en tant que telle:
foreach(var F in model.FieldMetaData)
{
if (F.FieldType == "String")
{
PbiFieldData PbiFieldData = new PbiFieldData()
{
FieldName = F.FieldName,
FieldValues = await db.PbiData.Where(x => DatasetList.Contains(x.DatasetId)).Select(F.FieldName).ToListAsync()
};
model.PbiData.Add(PbiFieldData);
};
}
3 Réponses :
Oui, vous pouvez utiliser l'expression
ParameterExpression param = Expression.Parameter(typeof(Table), yourVariable); MemberExpression propExpression = Expression.PropertyOrField(param, yourVariable); Expression<Func<Table, string>> selector = Expression.Lambda<Func<Table, string>>(propExpression, param); var result = db.Table.Select(selector).First();
Vous pouvez utiliser System.Linq.Dynnamic Nuget à cet effet basé sur commentaire, pour convertir à la liste, on peut utiliser p>
Je ne pense pas que c'est tout ce dont j'ai besoin. Comme indiqué, le nom de la colonne de la liste Select sera une variable, pas une chaîne.
@Eltensionhelp lorsque vous dites une variable. Voulez-vous dire une variable de chaîne qui a columnAname? Dites colonname = "département"? ou alors ?
@ExtensionHelp Si tel est le cas, comme expliqué dans OP, veuillez vérifier la réponse mise à jour
Cela n'a pas produit d'erreur, mais quand j'ai ajouté Tolist () à la fin, c'est. Une idée pourquoi?
Vous pouvez utiliser .tolistasync ().
L'erreur est une nullreferenceException sur modèle.pbidata.add (pbifielddata); code> ... J'ai mis à jour le code complet en op.
Laissez-nous Continuer cette discussion en chat .
Vous pouvez écrire une requête SQL natif:
var FieldValues = ctx.Database.SqlQuery<string>
(
$@"select {fieldName} from PbiData
where DatasetId in ({string.Join(", ", DatasetList.Select(x => $"'{x}'"))})"
).ToList();
Pas de chance. Celui-ci produit immédiatement une erreur sur le premier mot clé @ Symbole ", identifiant ou chaîne attendue après le spécificateur Verbatim @"
Je reçois l'erreur Pseudocolumn invalide "$ abffc3b5". Code> ... J'aurais dû mentionner, la gamme de données et les données de données sont des GUIDS, alors peut-être qu'ils doivent être traités différemment.
Pour clarifier, la chaîne "ABFFC3B5" fait partie du GUID du premier jeu de données.