如何在LINQ中的where子句中进行嵌套选择

本文关键字:嵌套 选择 子句 where LINQ 中的 | 更新日期: 2023-09-27 18:00:55

考虑以下SQL语句:

SELECT  tfd.[ID],
        tfd.[TaxFormID],
        tfd.[TaxCodeLineNumber],
        tfd.[TaxCodeLineDescription]
FROM    [TaxCode].[TaxFormDetail] tfd
WHERE   tfd.[TaxFormID] = (SELECT TOP 1 cri.[TaxFormID] FROM [settings].[CompanyReportInformation] cri)

数据库在"cri"表中有一条记录,作为预防措施,我想做一条前一条记录。

我有以下LINQ语句不起作用,这是我需要帮助的地方。

var _query = (
from tfd in TaxFormDetails
where tfd.TaxFormID ==
(from cri in CompanyReportInformation select new {cri.TaxFormID}).Take(1)
select new {tfd.ID, tfd.TaxFormID, tfd.TaxCodeLineNumber, tfd.TaxCodeLineDescription});
_query.Dump();

我得到以下错误:

运算符"=="不能应用于"System.Guid?"类型的操作数和"System.Linq.IQueryable">

我需要对我的LINQ语句做些什么才能使它发挥作用?

如何在LINQ中的where子句中进行嵌套选择

... select cri.TaxFormID).FirstOrDefault()

您正在将内部选择包装成一个匿名类型:

 select new {cri.TaxFormID}

应该是

 select cri.TaxFormID