2015-12-05 3 views
2

Как я могу показать данные из разных таблиц с помощью linq & C#? Мой проект представляет собой социальную сеть, в которой пользователь должен видеть все государственные должности, а также имя и изображение пользователя, пост, которыйОтображение данных из разных таблиц с Linq C# Asp.net

Теперь у меня есть это:

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 

Может кто-нибудь мне помочь?

Заранее спасибо :)

+0

Существует несколько способов достижения этого. Могу ли я спросить, почему вы хотите этого? –

+0

Почему вы не можете использовать функцию string.Format внутри вашего запроса linq, где у вас есть 'select new {p.text, u.uname, string.Format (@"/Content/Images \ {0} ", u.image);} ' – MethodMan

+0

И какой тип LINQ это? (Entity Framework?) –

ответ

0

Вы могли бы создать класс результата и перегрузить метод 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(), где вы выходите ting этот результат, а не создать класс.

Смежные вопросы