【问题标题】:Showing data from different tables with Linq C# Asp.net使用 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 中,并且是一个社交网络,用户可以在其中查看所有公开帖子以及发布该帖子的用户的姓名和照片:)

标签: c# asp.net linq


【解决方案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}\n{1}\n{2}", Text, Name, ImagePath); <-- uncomment and delete other return if not using C# 6
        return $"{Text}\n{Name}\n{ImagePath}";
    }
}

然后在你的查询中选择这样做:

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() 方法中所做的操作,您将输出此结果而不是创建类。

【讨论】:

    猜你喜欢
    • 2016-08-30
    • 2013-01-19
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多