2

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

无论如何,我有 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();

即使我告诉它获取第一个或默认值,令牌设置也会以可枚举的形式返回。我假设它是说在令牌上获得第一或默认值?

无论如何,即使表是一对多,tokensetting 表中也应该只有 1 条记录。如何仅在此表上返回第一个或默认值?

==== 答案 ====

按照建议,我做了以下事情:

  var tokensetting = (from ts in _currentcorp.Tokens
                      where ts.CorporationStructureId == corpstructure.CorporationStructureId                           
                      select ts.TokenSettings.FirstOrDefault()).FirstOrDefault();
4

1 回答 1

3

我相信 LINQ 查询返回 a IEnumerableof IEnumerables,所以一秒钟.FirstOrDefault()就可以得到你想要的。

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

于 2013-03-26T21:47:39.350 回答