Keine generische Methode 'Where' Typ 'System.Linq -.Queryable " ist kompatibel mit den mitgelieferten Typ-Argumente und Argumente
Möchte ich abrufen eines bestimmten Datensatzes mit IQueryable. Aber ich bekomme die Fehlermeldung 'Keine generische Methode 'Where' Typ 'System.Linq -.Queryable " ist kompatibel mit den mitgelieferten Typ-Argumente und Argumente. Keine Typ-Argumente sollten bereitgestellt werden, wenn die Methode ist nicht-generische.'. Ich habe die ausgewählten Zeilen-id, aber ich kann nicht es heraus. Hier ist mein code.
internal static IQueryable GetRecordsFromPrimaryKeys(this IQueryable datasource, List<FilterDescriptor> primaryKeys)
{
IQueryable data = datasource;
ParameterExpression paramExp = null;
bool firstLoop = false;
System.Linq.Expressions.Expression predicate = null;
var RecordType = datasource.GetObjectType();
paramExp = RecordType.Parameter();
foreach (FilterDescriptor primaryKey in primaryKeys)
{
if (!(firstLoop))
{
predicate = data.Predicate(paramExp, primaryKey.ColumnName, primaryKey.Value, FilterType.Equals, false, RecordType);
firstLoop = true;
}
else
{
predicate = predicate.AndPredicate(data.Predicate(paramExp, primaryKey.ColumnName, primaryKey.Value, FilterType.Equals, false, RecordType));
}
}
if (paramExp != null && predicate != null)
{
var lambda = Expression.Lambda(predicate, paramExp);
data = data.Provider.CreateQuery(
Expression.Call(
typeof(Queryable),
"Where",
new Type[] { data.ElementType },
data.Expression,
lambda
)
);
}
return data;
}
Mein Code funktioniert gut für IEnumerable/IQueryable/ICollection . Aber es wirft die Ausnahme, wenn ich geben Sie die Klasse mit dem Schlüsselwort virtual und Typ ICollection. Mein code ist
public class RoomType
{
public int ID { get; set; }
[MaxLength(10, ErrorMessage = "Room code cannot be longer than 10 characters.")]
public string Code { get; set; }
[MaxLength(50, ErrorMessage = "Room name cannot be longer than 50 characters.")]
public string Name { get; set; }
public virtual ICollection<RoomCategory> RoomCategories { get; set; }
}
Einige zufällige Werte wird angehängt 'RecordType', während mit dem keyword "virtuelles". Ich denke, das führt zu der Ausnahme. Noch auf der Suche nach der Lösung.
Ich weiß nicht, was schief läuft . Irgendwelche Vorschläge willkommen.
Dank.
InformationsquelleAutor RGR | 2011-11-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich lief einfach in einer ähnlichen situation. Das problem ergibt sich aus der Tatsache, dass in einigen Fällen sind Sie den Umgang mit dem "proxy" nicht die tatsächliche Person. Also, Sie wollen sicherstellen, dass
RecordType
entsprichtdata.ElementType
.versuchen:
Oder noch besser, versuchen:
InformationsquelleAutor Alfero Chingono
Versuchen
typeof(Enumerable)
statttypeof(Queryable)
InformationsquelleAutor Danil