Ich bekomme den folgenden Fehler beim Ausführen einer LINQ to SQL-Anweisung: Die angegebene Umwandlung von einem materialisierten System.String-Typ in die System.Guid 'Typ ist nicht gültig.LINQ Where-Klausel wirft Casting-Ausnahme von Zeichenfolge an Guid, obwohl Vergleich nur Guids
Die Ausnahme tritt auf dieser Linie:
IList<DocumentData> dds = hcDbContext.DocumentDatas.Where(d => fileDataSyncIds.Contains(d.FileDataSyncId)).ToList();
d.FileDataSyncId
ein Guid
und fileDataSyncIds
ist IList<Guid>
geben.
Es gibt keine Zeichenfolge, so dass ich nicht verstehe, woher der Fehler kommt.
Dies ist der Code:
DocumentData zipFile = new DocumentData();
IList<Guid> fileDataSyncIds = hcDbContext.Documents.Where(d => d.EventId == eventId && d.DocumentOwnerTeamId == teamId).Select(d => d.FileDataSyncId).ToList();
//Exception on next line
IList<DocumentData> dds = hcDbContext.DocumentDatas.Where(d => fileDataSyncIds.Contains(d.FileDataSyncId)).ToList();
using (var memoryStream = new MemoryStream()) {
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) {
foreach (var dd in dds) {
var docFile = archive.CreateEntry(dd.Filename);
using (var entryStream = docFile.Open())
using (var streamWriter = new StreamWriter(entryStream)) {
streamWriter.Write(dd.FileData);
}
}
}
zipFile.Filename = "Event" + eventId.ToString() + "_Team" + teamId + "_Documents.zip";
zipFile.FileData = memoryStream.ToArray();
}
return zipFile;
Überprüfen Sie den Typ von 'FileDataSyncId' in' DocumentDatas' Tabellendefinition und stellen Sie sicher, dass es 'Guid' /' uniqueidentifier' ist, nicht 'String' /' varchar (...) '. – dasblinkenlight
@dasblinkenlight Guter Fang. Es wurde nicht von 'nvarchar (max)' zu 'uniqueidentifier' in der Tabelle aktualisiert. Verwandle es in eine Antwort, und ich werde es korrekt markieren. – Legion