实体框架:如何在循环遍历多个列表时插入数据

时间:2015-04-21 04:10:04

标签: c# entity-framework

我正在尝试从两个List插入数据。 我能够从一个List成功插入,但使用foreach loop添加第二个列表无法按预期工作。

如何遍历每个列表以便我可以插入它们的值?

代码:

    private void InsertList()
    {
        var listA = new List<string>();
        var listB = new List<string>();

        //Populate both list by splitting items in listbox

        foreach (ListItem item in ListBox1.Items)
        {
            var components = item.Value.Split('/');

            listA.Add(components.First());

            listB.Add(components.Last());
        }

        using (DataContext dataContext = new DataContext())
        {
            foreach (var itemA in listA)
            {
                foreach (var itemB in listB)
                {

                    LIST_OBJECTS listObject = new LIST_OBJECTS
                    {
                        LIST_ITEM_A = itemA,
                        LIST_ITEM_B = itemB
                    };

                    dataContext.LIST_OBJECTS.Add(listObject);

                }

            }

            dataContext.SaveChanges();
        }
    }

2 个答案:

答案 0 :(得分:3)

for循环怎么样?

for (var i = 0; i < listA.Count; i++) 
{ 
    LIST_OBJECTS listObject = new LIST_OBJECTS
    {
        LIST_ITEM_A = listA[i], 
        LIST_ITEM_B = listB[i]
    }; 
    dataContext.LIST_OBJECTS.Add(listObject);
}

由于您从列表的创建中知道它们具有相同数量的元素,因此这很好。

答案 1 :(得分:2)

你可以用LINQ

来做
LIST_OBJECTS listObject = listA.Join(listB,
                                     a=>listA.Indexof(a),
                                     b=>listB.Indexof(b),
                                     (a,b)=> new LIST_OBJECTS()
                              {
                                   LIST_ITEM_A =a,
                                   LIST_ITEM_B =b 
                               }).ToList();