这个问题很令人困惑,因为我真的不知道如何问这个问题。
无论如何,我有 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();
即使我告诉它要获取第一个或默认值, token 设置也会以可枚举的形式返回。我假设它说的是在 token 上获取第一个或默认值?
无论如何,即使该表是一对多, token 设置表中也应该只有 1 条记录。如何仅返回此表上的第一个或默认值?
====答案====
按照建议,我执行了以下操作:
var tokensetting = (from ts in _currentcorp.Tokens
where ts.CorporationStructureId == corpstructure.CorporationStructureId
select ts.TokenSettings.FirstOrDefault()).FirstOrDefault();
最佳答案
我相信 LINQ 查询返回 IEnumerables
的 IEnumerable
,因此第二个 .FirstOrDefault()
应该可以满足您的需求。
第一个调用指定您想要 LINQ 查询结果中的第一行,第二个调用指定您想要 ts.TokenSettings
的第一个元素,它本身就是一个集合。
关于c# - 使用 linq 从链接到另一个表的表中获取单个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15647860/