将两个列表绑定到一个数据网格视图中



所以我有两个列表(MembersRealEstate)

我希望我的DataGridView显示写入我拥有的文本框中的MemberID的结果。

结果包括:

  • MemberIDFirstNameMembers列表中和
  • EstateTypeEstatePriceEstateAreaRealEstate列表中

我的代码如下:

List<Members> member = FrmSell.MembersList.FindAll(owner => owner.MemberID == int.Parse(FrmSell.txt));
List<RealEstate> realestate = FrmSell.EstateList;
dgvProperty.DataSource = member;
dgvProperty.DataSource = realestate;

当我单击我的按钮时,它只显示第二个列表的结果,即RealEstate列表而不是第一个列表,我想显示两个列表的结果组合成一个数据网格视图。

如果您需要更多澄清,请告诉我。

列表中的示例数据:

//Sample data
Members m1 = new Members(001,"Ahmed","Muhairy",503299999);
MembersList.Add(new Members(002,"Khalfan","AlMarri",502344556));
RealEstate r1 = new RealEstate("Villa",35000,"Quoz",4,2);
EstateList.Add(new RealEstate("House",55000,"Sharjah",6,4));

您需要将两个列表中匹配条目中的字段合并到DataSetDataTable中,或者合并到包含两种输入类型字段的新类的项目列表中。

为此,MemberRealEstate类中必须有一个字段,允许匹配两个输入列表中的条目。

例如,我将假设以下内容:您的RealEstate类有一个OwnerID字段,其值标识MembersList中的一个成员,因为它等于成员的MemberID值。

现在,您可以执行以下操作:

// This combines the fields from Member and RealEstate
// for a row to be displayed in the data grid.
public class MemberRealEstate
{
public int MemberID { get; set; }
public string MemberName { get; set; }
public int EstateID { get; set; }
public string EstateType { get; set; }
public double EstatePrice { get; set; }
public string EstateArea { get; set; }
} 

并创建一个新列表,合并其他两个条目:

var forMemberId = int.Parse(FrmSell.txt);
var memberRealEstateList = 
(from estate in FrmSell.EstateList
from member in FrmSell.MembersList
where member.MemberID == forMemberId && member.MemberID == estate.OwnerID
select new MemberRealEstate() {
MemberID  = member.MemberID,
MemberName = member.FirstName + " " + member.LastName,
EstateID = estate.EstateID,
EstateType = estate.EstateType,
EstatePrice = estate.EstatePrice,
EstateArea  = estate.EstateArea 
}).ToList();

现在,您可以将此列表指定为DataGridViewDataSource

dgvProperty.DataSource = memberRealEstateList;

最新更新