我正在尝试使用 MVC 制作可下载的轨道。 这是我的代码:
public ActionResult DownloadTrack(int albumid, int trackid)
{
var track = (from x in database.songs
where x.ALBUM_ID == albumid &&
x.TRACK_ID == trackid
select x).First();
Byte[] Song = track.MP3;
return File(Song, ".mp3", "test");
}
当代码到达 Byte[] Song 时,它说 track.MP3 = null 但是当我查询我的数据库时,它说它已满......
最佳答案
First 运算符返回序列的第一个元素或与谓词匹配的序列的第一个元素,具体取决于使用的原型(prototype)。
顺便说一句: 如果任何参数为 null,则抛出 ArgumentNullException。 如果源序列为空或谓词从不返回 true,则抛出 InvalidOperationException。
因此,很可能 where 子句中使用的条件不会产生任何结果。
建议如下:
a) 如果您使用的是 MS SQL Server,请使用 SQL Profiler 并确保将正确的 SQL 应用于数据库(从 LINQ 生成的 SQL)
- 打开 SQL Server Management Studio
- 转到工具 – SQL Server Profiler
- 同意打开的 Trace Properties 对话框中的默认值,点击“运行”
- 运行上述 LINQ 并在 SQL Profiler 中调查 SQL 语句 (你可以直接将分析器中的 SQL 复制并粘贴到数据库中,运行并查看是否 它是否产生所需的结果,如果没有,请修改 LINQ)。
b) 建议使用FirstOrDefault,并处理返回的null
关于c# - LINQ 查询在请求字节时返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14691432/