【问题标题】:How retrieve value from string collections in c#如何从 C# 中的字符串集合中检索值
【发布时间】:2014-05-30 08:08:53
【问题描述】:

我有一个集合定义:

public class CompanyModel
{
    public string compnName { get; set; }
    public string compnAddress { get; set; }
    public string compnKeyProcesses { get; set; }
    public string compnStandards { get; set; }
}

然后我将名称和地址从数据表中存储到此集合中:

List<CompanyModel> companies = new List<CompanyModel>();
for(int i = 0; i < dt.Rows.Count; i++)
{
    companies.Add(new CompanyModel 
    { 
        compnName =  dt.Rows[i]["companyName"].ToString(),
        compnAddress =  dt.Rows[i]["address"].ToString()
    });
}

我的问题是如何从该集合中检索每个 compnName ? 我试过这个

foreach (CompanyModel company in companies)
{
    string compnyName = company.compnName;

但它返回空白结果。

【问题讨论】:

  • 你应该如何在单个字符串中获取每个公司名称?你想把它们全部连接起来吗?预期的输出是多少?
  • 你的意思是我最好将 compnName 声明为字符串数组?
  • 我不能告诉你。你应该告诉我们预期的输出。
  • dt 的输出是表 1 的列,其中包含许多不同名称的行。然后它将填充到 compnName 中。我的目的是一一获取这个名称,如果更合适的话,我可以更改 compnName 的声明。
  • 预期输出是我在 for 循环中放入 compnName 的每个公司名称

标签: c# asp.net collections


【解决方案1】:

最简单的选择是使用 LINQ,例如

var names = companies.Select(c => c.compnName);

【讨论】:

  • 它不在foreach下,不是吗?那么名称会是一个数组吗?如何访问一个名字,一个一个?
  • 这将产生一个可枚举的列表,即您可以运行 foreach 循环的列表。你可以调用ToArray 来创建一个string 数组。然后,您可以通过索引从该数组中获取单个名称。如果您一开始只想要一个名字,那么您可以在Select 之前或之后适当地调用FirstSingleFirstOrDefaultSingleOrDefault
  • 我应该把它放在哪里以及如何在我的情况下使用 foreach 和 toarray?你能把它应用到我的代码中吗?
  • 就像任何代码一样,你可以把它放在你需要的地方。正如我已经说过的,该代码将生成一个可枚举的名称列表。你在哪里需要这样的清单?那就是你放代码的地方。至于ToArray 调用,您只需将其添加到末尾,因此您在Select 的结果上调用ToArray
  • 列表公司不包含“选择”定义。它只有“包含”
猜你喜欢
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多