【问题标题】:About Lists and Objects关于列表和对象
【发布时间】:2012-10-13 12:28:36
【问题描述】:

这行得通:

data.Add(New Object() {activityDate, types("Aerobics - low"), types("Aerobics - high")})

但是,我需要第二个和第三个变量是数据库驱动的(来自以下示例中的列表):

Dim var1 = New List(Of Object)
var1.Add(types("Aerobics - low"))
var1.Add(types("Aerobics - high"))
data.Add(New Object() {activityDate, var1.ToList})

这似乎不起作用。如何将我的对象放入另一个对象中?

编辑:

我也尝试过data.Add(New Object() {activityDate, var1.ToArray}),但这也不起作用。我只想将列表中的动态元素放入上述格式的对象中。

谢谢。

【问题讨论】:

  • 那不是对象;这是一个数组。你应该自己上课。
  • 你能给我发一个例子吗?我不明白你的意思。问题是我不想将这些硬编码到一个类中,因为它们将是数据库驱动的。
  • 我更清楚地更新了这个问题。

标签: asp.net-mvc vb.net asp.net-mvc-3


【解决方案1】:

尽量避免创建List(Of Object),因为这可能会导致很多麻烦。 相反,退后一步,想想你需要什么。您希望查看和使用哪些数据元素?然后创建一个类来定义满足您的解决方案的属性。

Public Class MyStuff
    Public Property ActivityDate() As DateTime
    Public Property Activities As List(Of Object)
End Class

那么你可以:

data.Add(new MyStuff() { ActivityDate = activityDate, Activities = var1 }

【讨论】:

  • 问题是我不想将这些硬编码到一个类中,因为它们将是数据库驱动的。我只需要一种将列表的动态元素列出到对象中的方法。
  • 我能理解您的犹豫,但您的数据架构无论如何都是“硬编码”的。也许如果我了解您的数据是什么样的,我可以帮助您使其更可行。
  • 谢谢你,杰。我想我在我发布的答案中找到了最适合我的方法。我只是想将我的数据放入一个对象中。
【解决方案2】:

您应该能够使用像这样的标准语法来制作匿名对象:

data.Add(New With { .activityDate = activityDate, .List = var1.ToList() });

【讨论】:

    【解决方案3】:

    我相信我想通了。我是这样做的:

    Dim var1 = New List(Of Object)
    var1.Add(activityDate)
    var1.Add(types("Aerobics - low"))
    var1.Add(types("Aerobics - high"))
    data.Add(var1.ToArray)
    

    【讨论】:

    • 那是一个列表——一个列表不是对象,而是一个对象列表。更糟糕的是,项目的顺序可能会更改,恕不另行通知!可能这适用于单个用例,但如果您更改某些假设,它非常容易受到攻击并且会在几毫秒内崩溃。
    • 谢谢,克里斯蒂安。我相信这对我来说是完美的,但在另一个程序中它可能并不理想。
    猜你喜欢
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 2012-09-21
    • 2013-08-26
    • 1970-01-01
    • 2018-10-20
    • 2013-06-07
    • 1970-01-01
    相关资源
    最近更新 更多