【问题标题】:C# - Nested Array/Data structuresC# - 嵌套数组/数据结构
【发布时间】:2016-03-03 17:46:24
【问题描述】:

最近,我开始接触 C# (ASP.NET) 并从 PHP 继续前进。我想实现这样的目标:

mainArray (
   array 1 (
      'name' => 'example'
   ),
   array 2 (
      'name' => 'example2'
   )
);

我知道您可以在 C# 中使用Array,但是,您必须在这样做之前指明数组的长度,这就是问题所在。

我想在一个类函数中循环一个数据库,它返回一个包含所有列的数组,即:

id、用户名、电子邮件。

我试过了:

public Array search_bustype(string match, string forthat)
{
    db = new rkdb_07022016Entities2();
    var tbl = (from c in db.tblbus_business select c).ToArray();
    List<string> List = new List<string>();
    int i = 0;
    foreach (var toCheck in tbl)
    {
        if (toCheck.BusType.ToString() == match)
        {
            if (forthat == "Name")
            {
                List.Add(toCheck.Name);
            }
            if (forthat == "Address")
            {

            }
        }
        i++;
    }
    return List.ToArray();
}

但正如您所见,我只需要返回单列,因为 List 不是多维的(不能嵌套)。

我可以用什么来解决这个问题?我查看了一些链接:

C# Arrays
StackOverflow post

但这又是我的结构的一个问题,因为我不知道声明数组时需要多少索引 - 数据库每天都在增长。

提前致谢。

【问题讨论】:

  • 重新考虑整个设置不是更好的选择吗?既然您使用的是数据库中的数据,为什么不使用模型来保持数据的结构化?
  • 您能在这方面提供任何参考吗? - 我是 C# 新手。将不胜感激! @Matthijs
  • 您基本上会使用您的数据包含的属性创建一个类,并用该类的实例填充一个列表。 like this 可以提供帮助。
  • 这取决于您的班级设置。不过,我会为每个属性创建 getter 和 setter 方法。看看 C# 中的自动属性。
  • 实体框架可以更好地使用模型,所以我建议使用它们!

标签: c# arrays multidimensional-array


【解决方案1】:

试试这样的。首先,为您的业务模型定义一个类。

public class Person
{
    public string Name {get;set;}
    public string Address {get;set;}
}

然后使用通用列表而不是字符串列表。

public Person[] search_bustype(string match, string forthat)
{
    var db = new rkdb_07022016Entities2();
    List<Person> personList = new List<Person>();
    foreach (var toCheck in db.tblbus_business.Where(b => b.BusType.ToString() == match))
    {
        var model = new Person { Name = toCheck.Name, Address = toCheck.Address };
        personList.Add(model);        
   }
   return personList.ToArray();
}

我不确定你想用 forthat 变量做什么。

【讨论】:

  • forthat 变量 - 原谅这个可怕的名字 - 只是我想从中提取的列。即:search_bustype('CUS', 'Name'); 将在总线类型中搜索“CUS”并返回对应于所有 Bus_type 客户的 NamesList。不过谢谢你!
【解决方案2】:

您可以使用列表列表

IList<IList<string>> multiList;

【讨论】:

  • 我花了这么长时间试图找到它真是太疯狂了,但它的文档显然被命名,否则,与“多维”或“嵌套”不同。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-08-14
  • 2022-06-10
  • 1970-01-01
  • 2014-04-27
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
相关资源
最近更新 更多