使用 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 查询

Asp.Net 5 缺少 Linq to Sql 类

C# ASP.NET ASP.NET#命名空间"System.Data"中不存在类型或命名空间名称"Linq"(是否缺少程序集引用?)

在标签控件 (ASP.NET) 中显示来自 DataReader 的数据