我有兩個DataTables
DataSet
通過DataRelation
鏈接在一起,我試圖選擇具有值爲x的子行的所有父行。DataSet選擇其父行包含x值的父行
父表中包含的產品和子表中包含的類別,該產品是英寸
DataSet dsProducts = new DataSet();
DataTable dtProducts = new DataTable("products");
dtProducts.Columns.Add("entity_id", typeof(int));
dtProducts.Columns.Add("sku", typeof(string));
dtProducts.Columns.Add("mpn", typeof(string));
dtProducts.Columns.Add("brand", typeof(string));
dtProducts.Columns.Add("name", typeof(string));
dtProducts.Columns.Add("description", typeof(string));
dtProducts.Columns.Add("short_description", typeof(string));
dtProducts.Columns.Add("image", typeof(string));
dtProducts.Columns.Add("weight", typeof(double));
dtProducts.Columns.Add("qty", typeof(double));
dtProducts.Columns.Add("cost", typeof(double));
dtProducts.Columns.Add("price", typeof(double));
dtProducts.PrimaryKey = new DataColumn[] { dtProducts.Columns["entity_id"] };
dsProducts.Tables.Add(dtProducts);
DataTable dtCategories = new DataTable("categories");
dtCategories.Columns.Add("entity_id", typeof(int));
dtCategories.Columns.Add("category_id", typeof(int));
dsProducts.Tables.Add(dtCategories);
dsProducts.Relations.Add(new DataRelation("entity_id", dtProducts.Columns["entity_id"], dtCategories.Columns["entity_id"]));
編輯
我拼湊這片LINQ的代碼工作但似乎沒有意義DataRelation
var rows = from prods in dsProducts.Tables["products"].AsEnumerable()
join cats in dsProducts.Tables["categories"].AsEnumerable() on prods.Field<int>("entity_id") equals cats.Field<int>("entity_id")
where cats.Field<int>("category_id") == id
select prods;
如果您的答案適合您,請隨時回答您自己的問題。 – 2012-01-16 21:09:43
它的工作原理,但是在那裏已經存在關係時,必須重新創建一個關係似乎有點愚蠢。 – Christian 2012-01-16 21:14:53