Je dois écrire LINQ dynamique où je ne sais rien à propos de la table d'entrée - fournisseur de données (ce qui explique pourquoi j'utilise LINQ to SQL), pas de tableau nom, rien. Je veux être en mesure d'interroger les données fournies champs sélectionnés par l'utilisateur et les valeurs données, quelque chose comme ce qui suit:Cast ITable à IEnuerable <object> - Dynamic LINQ to SQL requête sans informations DataTable
Avoir un String
TheTableName
et System.Data.Linq.DataContext
TheContext
:
IEnumerable<object> GetQuery(List<string> theWhereFields, List<string> theWhereValues)
{
// for doing dynamically ala http://stackoverflow.com/a/25859319/3661120
var baseTable = (ITable)TheContext.GetType()
.GetProperty(TheTableName).GetValue(TheContext, null); // http://stackoverflow.com/a/1924966/3661120
IEnumerable<object> query = (IEnumerable<object>) baseTable;
for (int i = 0; i < theWhereFields.Count; i++)
{
var whereField = theWhereFields[i];
var whereValue = theWhereValues[i];
query = query.Where(whereField + "=" + whereValue); // possible due to System.Linq.Dynamic
}
return query;
}
Est-il exact de réunir la ITable
à un IEnumerable<object>
comme je l'ai fait ici?
Remarque ITable
est de System.Data.Linq
, https://msdn.microsoft.com/en-us/library/system.data.linq.itable(v=vs.110).aspx
ce qui est 'ITable'? – CodingYoshi
Voir ici: https://msdn.microsoft.com/fr-fr/library/system.data.linq.itable(v=vs.110).aspx. C'est IQueryable, mais pas nécessairement IEnumerable. – dashnick
TheContext est le DataSet alors comment savez-vous quelle table vous voulez? – jdweng