Umair Nafis Ответов: 1

Как получить максимальное значение id из второй таблицы с помощью join in entity framework в ASP.NET с#


я хочу привязать единственное изображение в "a.BlogPicturePath", которое хранится с максимальным значением идентификатора.

Как я могу использовать Join запрос, чтобы получить максимальное значение ID из второй таблицы?

Что я уже пробовал:

{
    try
    {
        using (database db = new database())
        {



            var query = (
                          from c in db.tblBlogs

                         join a in db.tblBlogMedias on c.id equals  a.BlogId



                         select new
                        {

                            c.id,
                            c.CreatedDate,
                            c.Author,
                            c.BlogTitle,
                            c.BlogDescription,
                            a.BlogId,
                            a.BlogPicturePath
                        }).OrderByDescending(d => d.id).ToList();



            System.Text.StringBuilder sb = new System.Text.StringBuilder();



                 query.ToList().ForEach(x =>
                    {



                            sb.Append(string.Format("<div class='post-thumb'><a href='#'><img class='img-responsive' src='{0}' alt=''></a><div class='post-meta'>"+
                                                     "</div>"+
                                                    "</div>"+
                                                    "<div class='entry-header'><h3><a href='#'>{1}</a></h3><span class='date'>{2}</span></div>",x.BlogPicturePath,x.BlogTitle,x.CreatedDate));


                    });





                 blogdiv.InnerHtml = sb.ToString();

                 Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "activateReadmore()", true);


        }




    }
    catch (Exception ex)
    {
        Response.Write(ex.Message);
    }

}

Umair Nafis

как написать этот запрос в entity framework . т. е. код написан выше:

выберите tblBlog.*,tblBlogMedia.BlogPicturePath от tblBlog левое внешнее соединение tblBlogMedia на tblBlog.ИД = tblBlogMedia.Blogid в
где именно tblBlogMedia.id=(выберите max(id) из tblBlogMedia, где BlogId='1')

здесь BlogId='1' - это просто пример того, что я хочу сделать так же, как BlogId = @blogid

Karthik_Mahalingam

попробуйте что-нибудь вроде этого
результат.Где(к=&ГТ;к. код = результат.Макс (=&ГТ;а.ИД).где(б=>б.идентификатор blogid = 1) )

Umair Nafis

Как>?? каков же результат этого.? и где его использовать ?

Karthik_Mahalingam

запрос

1 Ответов

Рейтинг:
0

Umair Nafis

var q = (from d in db.tblBlogMedias
                             join c in db.tblBlogs on d.BlogId equals x.id
                             select new
                             {
                                 d.Id,
                                 d.BlogPicturePath
                             }).OrderByDescending(d=>d.Id).Max(d => d.BlogPicturePath);



Я пишу этот запрос в цикле foreach, и он работает совершенно нормально. я просто передаю значение q в sb.append


Richard Deeming

Зовущий OrderByDescending с последующим Max в этом нет никакого смысла. Если вы хотите получить максимальное значение столбца, не имеет значения, в каком порядке находятся данные.

Если вам просто нужна картинка для элемента с самым высоким идентификатором, используйте:

.OrderByDescending(d => d.Id).Select(d => d.BlogPicturePath).FirstOrDefault()


Кроме того, вам не нужно join в этом запросе, поскольку вы ничего не используете из tblBlogs стол.

Umair Nafis

О да ! на самом деле вы абсолютно правы, и я не признавал этого раньше. лол
- Спасибо, Сэр.