c# - 使用 linq 从链接到另一个表的表中获取单个记录

标签 c# linq

这个问题很令人困惑,因为我真的不知道如何问这个问题。

无论如何,我有 4 个表,我需要访问 TokenSetting 表来获取一条记录。我获得了公司代码,我必须从那里前往并获取我需要的其余信息。因为每个公司都有多个公司结构,所以我必须首先获取公司结构才能获得分配给它的代币。

这是布局:

enter image description here

这是我的代码:

  _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 查询返回 IEnumerablesIEnumerable,因此第二个 .FirstOrDefault() 应该可以满足您的需求。

第一个调用指定您想要 LINQ 查询结果中的第一行,第二个调用指定您想要 ts.TokenSettings 的第一个元素,它本身就是一个集合。

关于c# - 使用 linq 从链接到另一个表的表中获取单个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15647860/

相关文章:

c# - 什么时候没有方法的 C# 类是糟糕的设计?

c# - c# 是否提供了一种直接的方法来为属性名称起别名?

c# - 具有左连接和组的 Linq 查询

c# - 将 HTML 转换为 PDF 发票

c# - Java 和 C# 的终结器

c# - 无法获得独占访问,因为数据库正在使用中

c# - Linq:按名称选择所有项目组,计数等于0

c# - 为什么 Select(x => ...Cast<x.GetType()>()) 不起作用?

c# - Entity Framework 如何访问关联?

c# - 使用匿名类型调用泛型方法 (C#)