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

时间:2015-07-02 21:45:42

标签: c# sql linq

考虑以下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语句做些什么才能使其正常工作?

2 个答案:

答案 0 :(得分:1)

您将内部选择包装为匿名类型:

 select new {cri.TaxFormID}

应该是

 select cri.TaxFormID

答案 1 :(得分:1)

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