将列表转换为逗号分隔的MySQL插入语句

3

我有以下两个类;

public class CarModels
{
    public List<Model> Model{ get; set; }

    public CarModels()
    {
        Model = new List<Model>();
    }
}

public class Model
{
    public int ModelId { get; set; }
    public string Name { get; set; }
    public bool Enabled{ get; set; }
}

我该如何将数据提取并格式化为以下形式:

(ModelId,名称,已启用),(ModelId,名称,已启用),(ModelId,名称,已启用)等等。

查找如何使用 string.Join 方法。 - MethodMan
你打算自己编写数据层吗? - user247702
2
我对任何计划编写自定义数据层的人的建议是:不要这样做。 - anaximander
2个回答

4
String.Join(",", models.Select(m => String.Format("({0},{1},{2})", m.ModelId, m.Name, m.Enabled)));

这将为您提供带有FalseTrue作为启用值的字符串。如果您想要EnabledDisabled,则在格式化模型字符串时使用:m.Enabled ? "Enabled" : "Disabled"


完整示例(使用NBuilder创建示例模型):

IEnumerable<Model> models = Builder<Model>.CreateListOfSize(3).Build();
Func<Model, string> formatModel = 
    m => String.Format("({0},{1},{2})", m.ModelId, m.Name, m.Enabled);
string result = String.Join(",", models.Select(formatModel));

输出:

(1,名称1,false),(2,名称2,true),(3,名称3,false)


0

试试这个:

var models = carModels.Model.Aggregate<Model, string>("", (s, m) =>
{
    return s + String.Format(",({0},{1},{2})", m.ModelId, m.Name, m.Enabled);
}).Substring(1);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接