我有以下模型:
public class Model {
public string Name { get; set; }
public List<int> Numbers { get; set; }
}
SQL
查询返回以下包含两个 nvarchar 列的数据集: Name | Numbers
'foo' | '1,2,3,4'
'bar' | '4,17'
有没有一种简单的方法可以使用
List<Model>
将查询结果自动分配给 Dapper
?我知道我可以使用多重映射并在 C# 代码中自己进行拆分,但我宁愿得到一个更简单的解决方案。
最佳答案
我不确定你是否可以称之为“更简单”,但这样的事情是一个选择:
public class Result
{
public string Name { get; set; }
public List<int> Numbers { get; set; }
}
public class DapperTests
{
[Test]
public void Test()
{
var conn = new SqlConnection(@"Data Source=.\sqlexpress; Integrated Security=true; Initial Catalog=mydb");
conn.Open();
var result = conn.Query<string, string, Result>(
"select Name = 'Foo', Numbers = '1,2,3' union all select Name = 'Bar', Numbers = '4,5,6'", (a, b) => new Result
{
Name = a,
Numbers = b.Split(',').Select(Int32.Parse).ToList()
}, splitOn: "*").ToList();
Assert.That(result.Count, Is.EqualTo(2));
Assert.That(result.FirstOrDefault(x => x.Name == "Foo").Numbers.Count, Is.GreaterThan(0));
Assert.That(result.FirstOrDefault(x => x.Name == "Bar").Numbers.Count, Is.GreaterThan(0));
}
}
关于sql-server - 使用 Dapper 将带有表示列表的字符串的列映射到 List<> 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34929231/