有人知道如何在linq中重现NVL()函数吗

有人知道如何在linq中重现NVL()函数吗,linq,nvl,Linq,Nvl,所以我需要做一个查询,我需要一些NVL,但我需要在linq中做这些(如果db后端是BD2,我们使用亚音速的话),我在网上搜索了“NVL linq”,但没有找到任何有用的东西,所以我在这里问 谢谢你的帮助 您可以使用空合并运算符??: var abs = from row in table select new {a = row.a ?? "default", b = row.b}; 运算符查看左侧的值,如果为null,则使用右侧的值。因此,在本例中,如果行.a为空,则a变为

所以我需要做一个查询,我需要一些NVL,但我需要在linq中做这些(如果db后端是BD2,我们使用亚音速的话),我在网上搜索了“NVL linq”,但没有找到任何有用的东西,所以我在这里问


谢谢你的帮助

您可以使用空合并运算符
??

var abs = from row in table
          select new {a = row.a ?? "default", b = row.b};
运算符查看左侧的值,如果为null,则使用右侧的值。因此,在本例中,如果
行.a
为空,则
a
变为
“默认值”


这假定
row.a
是一个字符串。

如果有人想知道我是如何完成此操作的,我没有使用null coalesce操作符。。。这比那还要简单。也许我没有清楚地解释我自己,但我需要做的是说,如果值为null,那么意味着我想要包含这个结果。看看吧

 possibleVendors = (from vndMapping in db.COMPANIES_VND_MAPPINGS
                     join v in db.COMPANIES_CMP_COMPANIES on vndMapping.VENDOR_ID equals v.COMPANY_ID
                     where
                     !(from ex in db.COMPANIES_VND_MAPPINGS
                        where (ex.OEM_ID == oemId || ex.OEM_ID == null)
                        && (ex.MODEL_ID == modelId || ex.MODEL_ID == null)
                        && (ex.MODALITY_ID == modalityId || ex.MODALITY_ID == null)
                        && (ex.CLASS_ID == productTypeId || ex.CLASS_ID == null)
                        && ex.EXCLUDE.ToUpper().Equals("Y")
                        select ex.VENDOR_ID).Contains(vndMapping.VENDOR_ID)
                     && (vndMapping.OEM_ID == oemId || vndMapping.OEM_ID == null)
                     && (vndMapping.MODEL_ID == modelId || vndMapping.MODEL_ID == null)
                     && (vndMapping.MODALITY_ID == modalityId || vndMapping.MODALITY_ID == null)
                     && (vndMapping.CLASS_ID == productTypeId || vndMapping.CLASS_ID == null)
                     select new
                     {
                       vndMapping.VENDOR_ID,
                       v.COMPANY_NAME
                     }).Distinct().OrderBy(x => x.VENDOR_ID).ToDictionary(x => x.VENDOR_ID, x => x.COMPANY_NAME);

现在请记住——我有一些局限性,因为我没有设计业务逻辑(显然)或数据库——如果您完全控制了一切,其他人可能会有更好的方法来实现这一点,不过这似乎是可行的

你能给我们一个查询的例子吗?如果
row.a
int
?“??不能应用于int和int”@JonathanPeel我希望任何数据库查询都会返回
int?
而不是普通的
int
。如果您返回的是纯
int
,则可以将其强制转换为
int?
。我可以试试。我知道你不能将
作为表达式中的某个东西,但也许我可以
(int?
它。如果你知道它是
int
为什么要检查它是否为空?