gpt4 book ai didi

c# - 转换为值类型 'int32' 失败,因为物化值为 null

转载 作者:行者123 更新时间:2023-11-30 20:58:34 24 4
gpt4 key购买 nike

以下是我从 GameByGameTypes 和 Categories 中获取值时的代码,但在名为 GameByGameTypes 的表中,CategoryId 列具有 NULL 值。所以我想要 0 代替 NULL

  Category objCategory;
var query = (from gametypebygametype in db.GameByGameTypes.Where( x => x.GameTypeId == gametypeid)
join category in db.Categories
on gametypebygametype.CategoryId equals category.CategoryId into joined
from category in joined.DefaultIfEmpty()
select new
{
category.CategoryId ,
category.CategoryName
}
).Distinct();
List<Category> objlistCategory = new List<Category>();
foreach (var item_temp in query)
{
objCategory = new Category();
objCategory.CategoryId = item_temp.CategoryId;
objCategory.CategoryName = item_temp.CategoryName;
objlistCategory.Add(objCategory);

}

最佳答案

或者你可以替换

select new 
{
category.CategoryId,
category.CategoryName
}

select new 
{
CategoryId = category.CategoryId ?? 0,
CategoryName = category.CategoryName ?? "",
}

如果您使用 ReSharper - 它会“提示”?不需要 0 部分。忽略它。

您使用的 Linq 代码被翻译成 SQL。当您执行它时 - 结果为 null,但强类型编译器无法相信这一点,并等待不可为 null 的值。 (这是失败的“物化”过程)。所以你只是“提示”编译器,它可能是空的。

Here is related question .

关于c# - 转换为值类型 'int32' 失败,因为物化值为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16007880/

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