假设我们为网格生成了这个 link-to-sql 数据集:
var query = from c in customers
orderby c.FirstName
select c;
Grid1.DataSet = query;
Grid1.DataBind();
生成此数据集后,我们需要以编程方式将“Vince Vaughn”添加到此数据集(目标是向此 linq-to-sql 数据集添加一行,以便从数据库中获取的值,以及第 1 行以编程方式添加,都出现在网格中)。
如何使用 C# 以编程方式完成此操作? (即以编程方式为 Vince Vaughn 添加一行到数据集)
CUSTOMERS TABLE
ID FirstName LastName
1 John Jones
2 Sally Smith
环境:C#.NET 4.0
提前谢谢你。
最佳答案
如果您的意思是实际将行添加到后端存储,并且假设 ID
是标识列并且您的模型配置正确,您可以这样做。
using (var context = new ...)
{
context.customers.Add(
new Customer { FirstName = "Vince", LastName = "Vaughn" });
context.SubmitChanges();
}
如果您只是想让 Vince 出现在列表中,您可以这样做
var query = customers.Concat(new Customer[]
{
new Customer
{
ID = customers.Max(c => c.ID) + 1,
FirstName = "Vince",
LastName = "Vaughn"
}
}).OrderBy(c => c.FirstName);
这会将 Vince 添加到列表中,但实际上不会将他添加到存储中。
如果您只是想将一个或多个结果“欺骗”到数据库中的一个集合中,您可以连接一组兼容的匿名类型,像这样......
var queryWithVince = query.Select(r = new
{
FirstName = r.FirstName,
LastName = r.LastName
})
.Concat( new []
{
new { FirstName = "Vince", LastName = "Vaughn" }
}
.OrderBy(p => p.FirstName);
如果它们的成员具有相同的属性名称和类型,则两个匿名类型是兼容的。如果 query
的结果是其他一些非匿名类型,您需要确保 linq 处理能够将这些结果与您的匿名添加相结合。
关于c# - 以编程方式将行添加到 Linq-to-SQL 数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12178570/