gpt4 book ai didi

c# - LINQ Where 子句抛出从字符串到 Guid 的转换异常,即使比较仅包含 Guid

转载 作者:行者123 更新时间:2023-11-30 17:37:31 24 4
gpt4 key购买 nike

执行 LINQ to SQL 语句时出现以下错误:从物化“System.String”类型到“System.Guid”类型的指定转换无效。

异常发生在这一行:

IList<DocumentData> dds = hcDbContext.DocumentDatas.Where(d => fileDataSyncIds.Contains(d.FileDataSyncId)).ToList();

d.FileDataSyncIdGuidfileDataSyncIds类型是 IList<Guid> .

没有字符串,所以我不明白错误是从哪里来的。

这是代码:

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;

最佳答案

问题很可能出在 DocumentDatas 表的 FileDataSyncId 字段的映射中。为了使 Contains 成功,该字段在数据库中必须是 uniqueidentifier,在 .NET 端必须是 Guid。错误消息表明 .NET 端将该字段视为 String,从而导致了问题。

关于c# - LINQ Where 子句抛出从字符串到 Guid 的转换异常,即使比较仅包含 Guid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37932552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com