Ich verwende Entity Framework in meinem C # -basierten Code. Ich stoße auf eine unerwartete Komik und suche nach Vorschlägen.
Fall 1, 2, 3, 4 ... Projekte:
RivWorks.dll
RivWorks.Service.dll
RivWorks.Alpha.dll
Proben (alle diese Arbeiten):
RivWorks.Alpha.dll:
public static bool EndNegotitation(long ProductID)
{
var product = (from a in _dbFeed.AutoWithImage
where a.AutoID == ProductID select a).FirstOrDefault();
...
}
RivWorks.Service.dll
public static RivWorks.Model.NegotiationAutos.AutoWithImage
GetProductById(long productId)
{
var myProduct = from a in _dbFeed.AutoWithImage
where a.AutoID == productId select a;
return myProduct.FirstOrDefault();
}
public static List<RivWorks.Model.NegotiationAutos.AutoWithImage>
GetProductByCompany(Guid companyId)
{
var myProduct = from a in _dbFeed.AutoWithImage
where a.CompanyID == companyId select a;
return myProduct.ToList();
}
usw
Fall "Verrücktheit":
RivWorks.Web.Service.dll (WCF-Projekt)
Enthält die gleichen Referenzen wie die anderen Projekte.
public NegotiateSetup GetSetup(string method, string jsonInput)
{
...
long.TryParse(ProductID, out result);
var product = (from a in _dbFeed.AutoWithImage
where a.AutoID == result select a).FirstOrDefault();
...
}
Ich erhalte diesen Fehler beim Kompilieren (das Wort "wo" wird in meinem Editor hervorgehoben):
Der Lambda-Ausdruck kann nicht in den Typ 'Zeichenfolge' konvertiert werden, da es sich nicht um einen Delegattyp handelt.
Irgendwelche Ideen, was dazu führen würde?
Für diejenigen, die am Ergebnis interessiert sind:
Mir fehlte eine einfache using-Anweisung am Anfang meines Codes.
using System.Linq;
Das hat es behoben.
In meinem Fall fehlte es
using System.Data.Entity;
using System.Linq;
using System.Data.Entity;
Ich hatte in einer Telerik-Raster-Vorlage in der Rasiermesseransicht eine Stunde lang damit zu kämpfen. In meinem Fall:
columns.Bound(x => x.ID).Template(@<text><a href="@(Model.AppUrl + AdditionalFeeTypes/Details/" + item.ID)">@item.ID</a></text>);
sollte das sein:
columns.Bound(x => x.Id).Template(@<text><a href="@(Model.AppUrl + AdditionalFeeTypes/Details/" + item.Id)">@item.Id</a></text>);
Der Fall zu "Id" war falsch! Ich hoffe das hilft jemandem. Möglicherweise erhalten Sie diese Fehlermeldung, nur weil Sie eine nicht vorhandene Eigenschaft eingeben.
In meinem Fall hatte ich die
Using System.Linq;
mir fehlte jedoch das && nach einer where-Klausel.
Bad Code:
item.Group.ID == grp.ID
p.Product_Status_Flag == 1 &&
item.Valid
Korrekter Code (ohne Fehler):
item.Group.ID == grp.ID && // <- This was missing and I didn't see it right away.
p.Product_Status_Flag == 1 &&
item.Valid
Ich hoffe, das erspart jemandem etwas Zeit.
Ich stolperte darüber und fand eine andere Lösung. Ich habe var query = context.Contacts.Where(c => c.FullNameReverse == "TingTong");
benutzt und den erwähnten Fehler erhalten. Der Fehler war, dass ich die Methode FullNameReverse()
als Eigenschaft FullNameReverse
verwendete. Verpasste das () !!!
ich hatte das gleiche Problem mit dem MVC 3-Rasierer. Vielleicht hat jemand das gleiche, also möchte ich zeigen, wie ich es in meiner Studie beheben kann
List<Taksit> lst = db.Taksit.Where(y => y.OgrenciId.Equals(Convert.ToInt32( list[0].Id))).ToList();
ich habe versucht, enthält zu verwenden, aber daher ist OgrenciId int. Ich bekomme den Fehler, der hier erwähnt wird
Thread ist ein bisschen alt, aber ich bin gerade erst darauf gestoßen und nichts im Netz war die Antwort. Eine Site erwähnte, was zu der Antwort geführt hat, was ein Datentypproblem war, aber leider kann ich sie nicht wieder finden. Ich poste meine Lösung hier. Vielleicht wird ein zukünftiger Sucher davon profitieren.
Original: IQueryable test = von r in Records, wobei r.Record_ID == 100 select r;
dabei ist Records ein IQueryable, das sich aus einem früheren LINQ-Expresson ergibt.
Das Update besteht darin, Records: (IQueryable <record>) Records im Ausdruck zu konvertieren. Wenn man es gefunden hat, ergibt es vollkommenen Sinn. Records ist nicht typisiert, so dass der LINQ keine Ahnung hat, ob r.Record_ID gültig ist. Die Verwirrung ist die Fehlermeldung, die an Dutzenden von Orten im ganzen Netz erscheint. In fast allen Fällen ist die Lösung eine der beiden fehlenden Verwendungsklauseln. Die ein oder zwei, die ich gefunden habe, waren kein Problem, sie haben sich nicht die Mühe gemacht, das Problem zu beheben.
Hoffe das hilft...
Mein Problem betraf das Format:
.Columns(columns => {
columns.Bound(p => p.Id).Filterable(false);
columns.Bound(p => p.Name).Width(250);
...
Jeder p.What hatte diesen Fehler drauf.
Dies war ein Projekt, das MVC verwendete, und ich fand, dass mein Problem darin bestand, "public static int" oder "public static string" für diese Variablen (Id, Name usw.) in meinem Modell zu verwenden. Wenn ich bei allen Modellvariablen "statisch" entfernte, wurde der Fehler nicht mehr angezeigt. Hat mich für ungefähr einen Tag verrückt gemacht ...
Ich hatte ein ähnliches Problem, aber mit Rx und in meinem Fall hinzugefügt
using System;
hat geholfen FWIW
Durcheinander mit diesen Erweiterungsmethoden zu vermissen ist manchmal zu nervig.
Ich hatte dieses Problem in einer etwas anderen Version.
Wenn Sie eine (statische) Methode aus Ihrem Lambda heraus aufrufen, überprüfen Sie den Rückgabetyp. Wenn der Rückgabetyp ein IEnumerable sein sollte (was häufig bei der Verwendung von Lambdas zutrifft), aber Sie geben Objekt zurück, haben Sie offensichtlich ein Problem.
Ich hatte ein ähnliches Problem beim Binden von Spalten an ein MVC-Gitter von Telerik. Ich hatte eine Id-Eigenschaft in meiner ViewModel-Klasse. (Inspiriert von Chris 'Antwort oben) Ich habe es in XxxId umbenannt und das Problem ist verschwunden. Ich erinnere mich an etwas, das MVC für Id-Eigenschaften besonders macht.
In meinem Fall hatte ich diesen Fehler beim Versuch, Include in clientContext.Load in einer Sharepoint 2013-App zu verwenden.
Ich hatte die Sharepoint-Clientbibliothek wie folgt aufgenommen:
using SP = Microsoft.SharePoint.Client;
Zur Behebung habe ich es auch ohne den Namensraum hinzugefügt:
using Microsoft.SharePoint.Client;
using SP = Microsoft.SharePoint.Client;
Versuchen Sie es mit Mit System.Linq; Ich denke, es wird Ihnen helfen, diese Probleme zu lösen.