問題:我想從代碼中填充一個LINQ表,而不是DataBase。在代碼中填充LINQ表?
可能嗎?
System.Data.Linq.Table<Question> myquestions = new System.Data.Linq.Table<Question>();
然後是這樣的:
myquestions.Rows.Add(aquestion);
問題:我想從代碼中填充一個LINQ表,而不是DataBase。在代碼中填充LINQ表?
可能嗎?
System.Data.Linq.Table<Question> myquestions = new System.Data.Linq.Table<Question>();
然後是這樣的:
myquestions.Rows.Add(aquestion);
只是填充一個普通的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是隻讀的,所以您不能按照您的要求真正做到,但我所呈現的是正確的方式。
也許你誤解了一些東西。 LINQ是一種沒有副作用的查詢語言。因此你不能用它填充任何結構。您只能針對任何現有信息創建查詢並進行某種轉換或過濾。
之後,您可以使用此查詢使用foreach()
,ToList()
或ToArray()
填補了一些元素,但你不能直接使用LINQ到任何元素插入一些其他的對象或集合。
錯誤:System.Data.DataTable不包含AsEnumerable的定義...(.NET 4.0,ASP.NET MVC 3) – 2011-03-02 07:55:39
.AsEnumerable()方法在名爲System.Data.DataSetExtensions的另一個程序集中可用,所以您將需要添加對該程序集的引用。通常在新項目(Vs.NET 2010)中默認添加此程序集。 – 2011-03-02 08:02:04
因爲他在示例中完全限定了他的表格,所以我認爲OP可能沒有包含System.Linq命名空間?編輯:Ninja'd – 2011-03-02 08:03:07