如何使用where子句中的相关对象获取实体对象

时间:2011-07-17 16:49:05

标签: c#

我有下表: 公司---> RelCompanyTax --->核对表 我想得到RelCompanyTax.CheckList.Month = 5的公司。 所以问题是:如何使用LINQ从DB获得所需的公司。

例如我尝试创建这样的查询:

var query = from comps in _context.Companies
        where comps.RelCompanyTax.CheckList.Month = 5
        select comps;
List<Company> resultCompanies = query.ToList();

但我不能,因为这是错误的语法。 如果可能,请帮我用正确的语法编写。

有关更多信息,我想说我有客户&lt; - &gt;服务体系结构,所以实体在服务端,问题不是双重赋值符号,这是比较谓词,是的你是对的我在这个主题中有语法错误,因为我没有从我的源代码中复制代码。我直接在这个主题上写了comps.RelCompanyTax.CheckList.Month = 5。我的最终结果是让所有公司都有comps.RelCompanyTax.CheckList.Month == 5条件。问题出在System.Data.Objects.DataClasses.EntityCollection中。我在编译代码后复制了以下错误消息:

错误4无法将lambda表达式转换为类型'string',因为它不是委托类型CompanyService.cs 20 25 TAService

错误5委托'System.Func'不接受1个参数CompanyService.cs 20 25 TAService

-----------&GT;最重要的错误信息:----------------&gt;

错误6'System.Data.Objects.DataClasses.EntityCollection'不包含'CheckList'的定义,并且没有扩展方法'CheckList'接受类型'System.Data.Objects.DataClasses.EntityCollection'的第一个参数可以找到(你错过了使用指令或程序集引用吗?) CompanyService.cs

在获得没有where子句的公司后,我可以通过List<RelCompanyTax> relCompanyTaxes = currentCompany.RelCompanyTaxes.ToList(); int checkListCount = relCompanyTaxes[0].CheckLists.Count;

的方式访问CheckList属性

但是当我尝试在where子句中使用CheckList属性时,发生了4,5和6错误。

2 个答案:

答案 0 :(得分:2)

我认为你只需要

comps.RelCompanyTax.CheckList.Month == 5

答案 1 :(得分:2)

您错过了等号= - 单=是作业,双==是比较(这是您想要的):

var query = from comps in _context.Companies
            where comps.RelCompanyTax.CheckList.Month == 5
            select comps;