在代码中填充LINQ表?

时间:2011-03-02 07:44:44

标签: c# .net vb.net linq linq-to-sql

问题:我想从代码填充LINQ表,而不是DataBase。

有可能吗?

System.Data.Linq.Table<Question> myquestions = new System.Data.Linq.Table<Question>();

然后像:

myquestions.Rows.Add(aquestion);

2 个答案:

答案 0 :(得分:3)

只需填充常规DataTable,您就可以在LINQ

中使用它
using System;
using System.Data;

namespace ConsoleApplication10
{
  class Program
  {
    static void Main(string[] args)
    {
      var dt = new DataTable();
      dt.Columns.Add("Id", typeof(int));
      dt.Columns.Add("Project Name", typeof(string));
      dt.Columns.Add("Project Date", typeof(DateTime));

      for (int i = 0; i < 10; i++)
      {
        var row = dt.NewRow();
        row.ItemArray = new object[] { i, "Title-" + i.ToString(), DateTime.Now.AddDays(i * -1) };
        dt.Rows.Add(row);
      }

      var pp = from p in dt.AsEnumerable()
               where (int)p["Id"] > 2
               select p;

      foreach (var row in pp)
      {
        Console.WriteLine(row["Id"] + "\t" + row["Project Name"] + "\t" + row["Project Date"]); 
      }

      Console.ReadLine();
    }
  }
}

在上面的代码中,您可以看到如何使用LINQ过滤掉DataTable中的某些记录。您需要将System.Data.DataSetExtensions程序集添加到引用

IEnumerables是readonly所以你不能按照你提出的方式真正做到,但我所呈现的是正确的方法。

答案 1 :(得分:0)

也许你误会了什么。 LINQ是一种没有副作用的查询语言。因此,您无法用它填充任何结构。您只能针对任何现有信息创建查询,并进行某种转换或过滤。

之后您可以使用此查询通过foreach()ToList()ToArray()填充某些元素,但不能直接使用LINQ将任何元素插入到其他对象或集合中