【发布时间】:2013-10-02 15:40:42
【问题描述】:
这是我的代码:
void Main() {
List<Restaurant> RestaurantData = new List<Restaurant>();
}
class Restaurant {
public int Id;
public List<Complaint> Complaints = new List<Complaints>();
}
class Complaint {
public string Name;
public string Address;
public int Age;
public DateTime ComplaintDate;
}
我想在 DataGridView 控件中显示 RestaurantData 中包含的数据。首先,我想显示餐厅的 ID,然后是针对餐厅的投诉数量,使其看起来像这样(ID 在 A 列,名称在 B 列,依此类推):
ID1、姓名、地址、年龄、日期 (空格)、姓名、地址、年龄、日期 (空格)、姓名、地址、年龄、日期 ID2、姓名、地址、年龄、日期 (空格)、姓名、地址、年龄、日期 (空格)、姓名、地址、年龄、日期每家餐厅至少有 1 起投诉,有些餐厅可能会有很多投诉。但在所有情况下,我都希望餐厅的 ID 只显示一次(随之而来的投诉)。我过去对 DataGridView 的使用仅限于 dataGridView1.DataSource = (some array)。但是,这次我要呈现的信息显然不是数组,所以我卡住了。
var ds = (from r in RestaurantData
from c in RestaurantData.Complaint
select new {Id = r.Id, Address =c.Address, Age = c.Age, Name = c.Name, Date = c.ComplaintDate}
).ToList();
dataGridView1.DataSource = ds;
目前,这会使用相应的餐厅 ID 填充每一行。如何调整上述查询,使餐厅 ID 只显示一次?
【问题讨论】:
-
每家餐厅的投诉最大数量是否已知(您希望在一行中显示)。
-
@Servy。不,我不知道提前投诉的最大数量。
-
@phan 是否可以将所有投诉的所有数据放在一个列中?您丢失了标题,但保留了信息。
-
@Ahmed 查看我添加的 LINQ 查询。
-
@Servy 数据必须在各自的列中分解,而不是全部集中在一个列中。
标签: c# winforms data-binding datagridview