使用 Linq C# Asp.net 显示来自不同表的数据
Posted
技术标签:
【中文标题】使用 Linq C# Asp.net 显示来自不同表的数据【英文标题】:Showing data from different tables with Linq C# Asp.net 【发布时间】:2016-03-10 16:26:02 【问题描述】:如何使用 linq 和 C# 显示来自不同表的数据? 我的项目是一个社交网络,用户应该在其中看到所有公开帖子以及发布该帖子的用户的姓名和图像
现在我有这个:
var posts_public = from p in db.Posts
join e in db.Privacy on p.id_post equals e.id_post
join pu in db.Publish on p.id_post equals pu.id_post
join u in db.Users on pu.id_utilizador equals u.id_user
where e.id_privacy== 1
select new p.text, u.name,u.image ;
Viewbag.post = posts_public;
但是当我想显示我选择的数据时,像这样显示我:
text = ola2, nome = André, image = /Content/Images\IMG_20150616_183508.jpg
我希望它只显示如下数据:
ola2
André
IMG_20150616_183508.jpg
有人可以帮我吗?
提前致谢:)
【问题讨论】:
有几种方法可以实现这一点。请问你为什么要这个? 为什么你不能在你有select new p.text, u.uname, string.Format(@"/Content/Images\0", u.image);
的 linq 查询中使用 string.Format 函数
这是什么类型的 LINQ? (实体框架?)
是的,有人知道如何用重音符号拼写我的名字。安德烈。呜呜呜。
@GertArnold 抱歉,我编辑了我的问题。我的项目在 asp.net 中,并且是一个社交网络,用户可以在其中查看所有公开帖子以及发布该帖子的用户的姓名和照片:)
【参考方案1】:
如果您要在各处执行此操作,您可以创建一个结果类并重载 ToString() 方法。
类:
public class PublicResult
public string Text get; set;
public string Name get; set;
public string ImagePath get; set;
public override string ToString()
//return string.Format("0\n1\n2", Text, Name, ImagePath); <-- uncomment and delete other return if not using C# 6
return $"Text\nName\nImagePath";
然后在你的查询中选择这样做:
var posts_public = from p in db.Posts
join e in db.Privacy on p.id_post equals e.id_post
join pu in db.Publish on p.id_post equals pu.id_post
join u in db.Users on pu.id_utilizador equals u.id_user
where e.id_privacy== 1
select new PublicResult Text = p.text, Name = u.name, ImagePath = u.image ;
现在无论您在哪里Console.WriteLine(posts_public)
,它都会显示为:
ola2
André
IMG_20150616_183508.jpg
或者,如果您只是在一个地方执行此操作,只需执行我在 ToString() 方法中所做的操作,您将输出此结果而不是创建类。
【讨论】:
以上是关于使用 Linq C# Asp.net 显示来自不同表的数据的主要内容,如果未能解决你的问题,请参考以下文章
在 ASP.Net MVC 的视图中使用 2 个表(使用不同的模型返回 2 个 LINQ?)
如何在 Asp.net MVC C# 中使用 Linq 从多个表中选择具有最大计数值的记录
通过 ASP.NET MVC 在 C# 视图中遍历匿名对象的嵌套 LINQ 查询
C# ASP.NET ASP.NET#命名空间"System.Data"中不存在类型或命名空间名称"Linq"(是否缺少程序集引用?)