我有下表: 公司---> 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;
但是当我尝试在where子句中使用CheckList属性时,发生了4,5和6错误。
答案 0 :(得分:2)
我认为你只需要
comps.RelCompanyTax.CheckList.Month == 5
答案 1 :(得分:2)
您错过了等号=
- 单=
是作业,双==
是比较(这是您想要的):
var query = from comps in _context.Companies
where comps.RelCompanyTax.CheckList.Month == 5
select comps;