将SQL的数据从C#中的订书片中获取列表

问题描述 投票:0回答:1
在大多数情况下,我在C#中使用一个简单的可观察集合,并用SQL查询获取的数据填充它。 像这样的工作有效:

public class MyClass { public string mystring1 { get; set; } = String.Empty; public string mystring1 { get; set; } = String.Empty; } ObservableCollection<MyClass> MyClassData = new ObservableCollection<MyClass>();

i可以轻松地插入由
SqlDataReader
获取的数据:

while (dataReader.Read())
{
    MyClassData.Add(new MyClass{ mystring1 = dataReader.GetValue(0).ToString(), mystring2 =  dataReader.GetValue(1).ToString() }});
}
事实证明,我需要一个在我的班上的第三会员,它应该不是一个简单的字符串,而是一个列表,所以我写了这篇文章:

public class MySubClass
{
    public string mystring3 { get; set; }
}

public class MyClass
{
    public string mystring1 { get; set; } = String.Empty;
    public string mystring1 { get; set; } = String.Empty;
    public List<MySubClass> MySubClassData { get; set; }
}

即将其仅在

MySubClass
中的一个简单的字符串,我需要此列表以供稍后使用。
现在,我有一个很大的问题,可以找到正确的语法,如何将SQL数据获取到新结构中,而我所得到的只是一堆好奇的错误。

我只是不知道如何处理

mystring3
作为

mySubClass

存储数据的成员。

请给我一个提示。 thanks,

hans
	
让我看看我是否在这里关注您的意图。似乎您想在表中有一个列,其中包含ORM不支持的“某些
MyClass

”(“任何orm”恰好是)。我想分享一个对我来说真的很好的解决方案,这确实无关紧要。

由于我想显示一个“真实”数据库交互,并且您还没有(尚未)在标签中指定一个ORM,希望我可以使用

SQLite-net-pcl

进行此模拟,这是可以的。当然,您的帖子显示

<T>
c# list nested
1个回答
0
投票
SqlDataReader

propoped解决方案:


通过序列化与JSON序列化,然后通过做一些补偿性名称映射来使其与类用户透明。

first

您使用oorm Idiom中的任何内容。
next
您将创建一个字符串属性,该属性将是该任意类的JSON序列化(并且可选地将其名称映射到例如SQLiteDataReader

);

这让您的课程看起来与此相似。 <T>

MySubClassData



使用控制台app
  • 的微小示例
    这将编写三个记录,然后查询其中一个并将其字符串表示形式输出到控制台。
    
  • MyClass
    sqlite的DB浏览器


    
	

© www.soinside.com 2019 - 2024. All rights reserved.