我看了一堆例子,我坚持这个问题......
数据
CategoryId OptionId CategoryName OptionName
1 2 Type Black & White
1 3 Type Color
2 4 Print Speed Less than 21 ppm
2 5 Print Speed 21-30 ppm
2 6 Print Speed 31-45 ppm
2 7 Print Speed 46-55 ppm
2 8 Print Speed 56-70 ppm
2 10 Print Speed 71 plus ppm
3 11 Software 3.5
3 12 Software 4
4 13 User Interface 7" Touch-Screen
4 14 User Interface 8.5" Touch-Screen
4 15 User Interface 10.1" Touch-Screen
4 16 User Interface 15.4" Touch-Screen
我希望父转发器在CategoryName上做区别,但是当我这样做时,我没有得到嵌套转发器中的所有OptionNames。我正在使用dataTable来填充父转发器。我尝试过linq和distinct,它会正确地显示类别名称和选项,但我需要在嵌套转发器中使用ID ...
我正在使用这个示例 - Databind repeater using Linq with group by如何更改linq以包含更多字段,我对Linq不是很熟悉。
Parent Repeater Databind
Repeater1.DataSource = (from x in csvData.AsEnumerable() select x["category"]).Distinct();
Nested Repeater Databind
rptr.DataSource = csvData.AsEnumerable().Where(x => x["category"].Equals(e.Item.DataItem));
答案 0 :(得分:0)
var output = catOptData.AsEnumerable()
.Select(x => new { CategoryId = x["CategoryId"], CategoryName = x["CategoryName"] })
.Distinct();
为父母和嵌套我做了吗
rptr.DataSource = catOptData.AsEnumerable().Where(x => x["CategoryName"].Equals(DataBinder.Eval(e.Item.DataItem, "CategoryName").ToString())).AsDataView();