我尝试了这个但是: -
using (var db = new
DataContext(ConfigurationManager.ConnectionStrings["DB"].ToString()))
{
var items = from t in db.Table1
where t.ID.Equals(100)
select t;
foreach (var item in items)
{
using (var db1 = new
DataContext(ConfigurationManager.ConnectionStrings["DB"].ToString()))
{
Table1 tab = new Table1
{
FName = item.FName,
LName = item.LName,
Number = item.Number,
};
db1.Table1.InsertAllOnSubmit(tab);
db1.SubmitChanges();
}
}
}
我无法编译它。它会在“ db1.Table1.InsertAllOnSubmit(tab)”行引发此错误: -
'System.Data.Linq.Table.InsertAllOnSubmit(System.Collections.Generic.IEnumerable)' 无法从使用中推断出来。尝试指定类型参数 明确。
答案 0 :(得分:2)
您的代码存在一些缺陷。
你似乎读了一个Table1(假设id是唯一的),但你把它当作一个集合
快速尝试,因为您一次只添加一个table1:替换
db1.Table1.InsertAllOnSubmit(tab);
通过
db1.Table1.InsertOnSubmit(tab);
如果您的ID不是唯一的,请尝试:
List<Table1> items = (from t in db.Table1
where t.ID.Equals(100)
select t).ToList();
其余代码可以保持不变(但仍然替换InsertAllOnSubmit)
<强>更新强>
你可以简化大时间:
using (var db = new
DataContext(ConfigurationManager.ConnectionStrings["DB"].ToString()))
{
Table1 thisTable = (from t in db.Table1
where t.ID. == 100
select t).SingleOrDefault();
if ( thisTable != null)
{
Table1 tab = new Table1 ()
{
FName = item.FName,
LName = item.LName,
Number = item.Number, };
db.Table1.InsertOnsubmit(tab)
db.SubmitChanges();
}
}
}
如果你100%确定你的id总是匹配使用.Single()而不是.SingleOrDefault()。如果没有结果匹配,Single将抛出异常。在这种情况下,SingleOrDefault返回NULL。