C# 将多个数据源绑定到单个ListView

C# 将多个数据源绑定到单个ListView,c#,asp.net,linq,C#,Asp.net,Linq,我有一个数据库,有两个表,User和Image 用户包含ID主键和用户名字段 Images包含字段ID主键、链接到User.ID的UserID外键和ImageTitle 我有一个ListView,其中包含这些值的ASP控件 <h1><%#Eval ("ImageTitle") %></h1> <h4 id="authorText">Uploaded by <%#Eval ("UserID") %></h4> 现在,当我想从

我有一个数据库,有两个表,User和Image

用户包含ID主键和用户名字段 Images包含字段ID主键、链接到User.ID的UserID外键和ImageTitle

我有一个ListView,其中包含这些值的ASP控件

<h1><%#Eval ("ImageTitle") %></h1>
<h4 id="authorText">Uploaded by <%#Eval ("UserID") %></h4>
现在,当我想从images表中检索值时,这很好,但是正如您在上面看到的,我已经上传了by,然后是user ID,在这里我需要用户名

我要问的是,如何将用户表和图像表绑定到同一个listview,以便访问这两个表中的属性


请记住,由于两个表都使用ID值作为主键,所以它需要知道我引用的是哪个表的ID列。

不能将两个数据源分配给ListView。因此,您有责任将这两个数据源收集到结果集中。可以使用存储过程或C代码创建一个数据集和两个数据集。这里是一个存储过程的例子,如果您需要c代码,请告诉我

您可以创建存储过程连接SQL查询,该查询返回带有字段的单个数据表

选择USer.UserID、用户名、ImageId、ImageTitle 从用户内部连接图像 ON user.userid=images.userid

然后将此数据表用作ListView的数据源,您将需要一个联接

问题中没有足够的信息为您提供完整的答案,但您应该能够从这篇MSDN文章中找出语法:

我怀疑新的查询看起来像这样,但是如果不知道类是如何设置的,很难说

var images = from i in PiccyPic.Images
join user in PiccyPic.Users on i.UserId equals user.Id
select new { property1 = i.Property1, property2 = user.Property2, etc. }

谢谢你的评论,查尔斯。我使用以下代码进行了连接:var images=from I in PiccyPic.images join user in PiccyPic.I.UserID上的用户等于user.ID select I;现在我只需要知道如何在我的aspx页面中引用它。通常我会这样做,但我如何让它知道要查看哪个表?使用i.ID不起作用。啊,对不起,应该能够使用您在初始值设定项中使用的别名绑定它们。它不应该真正关心数据来自哪个表,它现在正在为您的数据使用一个对象。因此,如果您想绑定到property2,它是在我最初的猜测中从Users表初始化的,那么您应该可以使用:。对不起,我希望这有道理。
var images = from i in PiccyPic.Images
join user in PiccyPic.Users on i.UserId equals user.Id
select new { property1 = i.Property1, property2 = user.Property2, etc. }