问题很混乱,因为我真的不知道怎么问这个。
无论如何,我有4个表,我需要到TokenSetting表来获取单个记录。我得到了公司代码,我必须从那里旅行并获得我需要的其他信息。而且因为每个公司都有多个公司结构,所以我必须首先获得公司结构以获得分配给它的标记。
这是布局:
这是我的代码:
_currentcorp = (from c in _entities.Corporations
where c.CompanyCode == textBox_CompanyCode.Text
select c).FirstOrDefault();
if (_currentcorp == null)
{
errorProvider1.SetError(textBox_CompanyCode, "Invalid corporation.");
return;
}
var corpstructure = (from cs in _currentcorp.CorporationStructures
where cs.District == null &&
cs.Branch == null &&
cs.Region == null
select cs).FirstOrDefault();
if (corpstructure == null)
{
errorProvider1.SetError(textBox_CompanyCode, "Invalid corporation structure.");
return;
}
var tokensetting = (from ts in _currentcorp.Tokens
where ts.CorporationStructureId == corpstructure.CorporationStructureId
select ts.TokenSettings).FirstOrDefault();
令牌设置即使我告诉它获得firstordefault,也会以可数字的形式返回。我假设它是在说代币上的第一个缺陷?
无论如何,令牌设置表中应该只有1条记录,即使该表是1对多。如何仅在此表上返回firstordefault?
====答案====
根据建议,我做了以下事项:
var tokensetting = (from ts in _currentcorp.Tokens
where ts.CorporationStructureId == corpstructure.CorporationStructureId
select ts.TokenSettings.FirstOrDefault()).FirstOrDefault();
答案 0 :(得分:2)
我相信LINQ查询返回的IEnumerable
为IEnumerables
,因此第二个.FirstOrDefault()
可以为您提供所需内容。
第一个调用指定您想要LINQ查询结果中的第一行,第二个调用指定您想要ts.TokenSettings
的第一个元素,它本身就是一个集合。