C# 具有2个数据源的中继器

C# 具有2个数据源的中继器,c#,asp.net,repeater,C#,Asp.net,Repeater,我有两个数据库表,用户表和消息表 我使用一个中继器来显示消息,它从消息表中检索数据,该表包含一个用户ID,也显示了该用户ID。我想显示firstname和lastname,而不是UserID,但是如何在中继器中实现这一点呢?我需要使用2个数据源吗 消息表不包含FirstName和LastName,因此我根据消息表中的UserID从用户表中读取FirstName和LastName private List<Message> listMessages = Database.GetMess

我有两个数据库表,用户表和消息表

我使用一个中继器来显示消息,它从消息表中检索数据,该表包含一个用户ID,也显示了该用户ID。我想显示firstname和lastname,而不是UserID,但是如何在中继器中实现这一点呢?我需要使用2个数据源吗

消息表不包含FirstName和LastName,因此我根据消息表中的UserID从用户表中读取FirstName和LastName

private List<Message> listMessages = Database.GetMessages();
repeaterMessages.DataSource = listMessages;
repeaterMessages.DataBind();
但我得到的是:

MessageID: 1
UserID: 43
This is the content.
message类的成员包括MessageID、UserID和Content。您需要选择与用户关联的消息,并仅投影要显示的列


例如,您可以定义一个名为DisplayableMessage的类,该类将包含成员,例如MessageID、UserName和Content。您可以为该类定义一个方法,我们将其命名为GetDisplayableMessage,它将根据消息和用户数据初始化DisplayableMessage列表。然后您可以将此方法与转发器的数据源相关联。

因为您的消息与用户链接,所以在消息实体中保留一个User对象,而不仅仅是UserId。@AbhishekJain您的意思是我还应该向消息表中添加两个额外的实体吗?FirstName和LastName?由于您要为消息创建一个实体,您还必须为用户创建一个实体。因此,您的消息实体将包含MessageID、UserUser整个实体、Content和User实体将包含UserId、FirstName、LastName、UserName、password等。因此,在从数据库检索消息时,还将检索每条消息的用户详细信息。
MessageID: 1
Mike Johnson
This is the content.
MessageID: 1
UserID: 43
This is the content.