Comment convertir IQueryable à DataTable
J'ai écrit la requête à l'aide de LinQ et j'ai utilisé le CopyToDataTable
méthode. Lors de cette ligne est-il en montrant la conversion implicite de type erreur de ma base de données type de System.Data.DataRow
.
var query = from i in dbContext.Personaldetails
where i.ID == 1
select i;
return query.CopyToDataTable();
Des suggestions?
OriginalL'auteur steve | 2012-05-16
Vous devez vous connecter pour publier un commentaire.
CopyToDataTable
nécessite la collecte deDataRow
objets. Consultez Comment: Mettre en œuvre CopyToDataTable Où le Type Générique T n'Est Pas un DataRow pour résoudre ce problème.Mise à JOUR: Si votre entité a nullable domaine, vous pouvez modifier
ObjectShredder.ExtendTable
méthode. Trouver de nouvelles colonnes sont ajoutées à la table, et de supprimer la deuxième paramètre, qui fournit un type de données dans la colonne (DataColumn classe ne prend pas en charge nullable types de données):assurez-vous d'utiliser
CustomLINQtoDataSetMethods
, pas celles de LINQ to dataset.J'ai créé des tableaux récemment avec exactement le même code. Il suffit de copier-coller à partir de msdn. Et assurez-vous d'utiliser
CustomLINQtoDataSetMethods
extension. E. g. vous pouvez l'appeler directementCustomLINQtoDataSetMethods.CopyToDataTable(query)
Semble que vous avez déclaré
CustomLINQtoDataSetMethods
classe à l'intérieur de certains autres de la classe. Déplacer vers le haut niveau, directement dans certains de l'espace de noms.Vous pouvez aussi vérifier si la propriété est de type nullable
type.IsGenericType && (type.GetGenericTypeDefinition() == typeof(Nullable<>))
et de fournir nullable type de paramètre au lieup.PropertyType.GetGenericArguments()[0]
OriginalL'auteur Sergey Berezovskiy