Linq to sql 如何使用linq to sql读取和插入数据库? 我首先从数据库中读取一组数据 使用同一表中的相同数据插入新记录

Linq to sql 如何使用linq to sql读取和插入数据库? 我首先从数据库中读取一组数据 使用同一表中的相同数据插入新记录,linq-to-sql,Linq To Sql,我试过了,但是:- 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 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)' 无法从用法推断。尝试指定类型参数 明确地说


你的代码有一些缺陷

您似乎阅读了一个表1(假设id是唯一的),但您将其视为一个集合

快速尝试,因为您一次只添加一个table1:Replace

db1.Table1.InsertAllOnSubmit(tab); 

如果您的ID不唯一,请尝试:

List<Table1> items = (from t in db.Table1 
            where t.ID.Equals(100) 
            select t).ToList();

如果您100%确定您的id将始终匹配use.Single()而不是.SingleOrDefault()。如果没有匹配的结果,Single将抛出异常。在这种情况下,SingleOrDefault返回NULL。

但问题出在哪里?我已经更新了我的问题。请检查ID是否是唯一的主键。从InsertALLONSubmit更改为InsertOnSubmit,我可以编译它。但我想知道我是否需要foreach循环,因为ID是唯一的,所以我总是只返回一条记录
List<Table1> items = (from t in db.Table1 
            where t.ID.Equals(100) 
            select t).ToList();
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(); 
         }
 } 
}