问题:我想从代码填充LINQ表,而不是DataBase。
有可能吗?
System.Data.Linq.Table<Question> myquestions = new System.Data.Linq.Table<Question>();
然后像:
myquestions.Rows.Add(aquestion);
答案 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将任何元素插入到其他对象或集合中