Перевести SQL на LINQ и как отобразить новые результаты в представлении? - PullRequest
1 голос
/ 11 ноября 2011

У меня есть вопросы:

1) Как перевести этот выбор в LINQ?

Select i.ID, i.Impression, 
(Select COUNT(ImpressionsId) 
    from DiaryImpressions 
    where DiaryPostsId = '2' AND ImpressionsId = i.ID) as Num from Impressions i

2) Я должен выполнить этот запрос внутри цикла, где я мог бы заменить жесткийзакодированное значение 2 для реального почтового идентификатора.Но как я могу сделать это в C # с MVC3?Может ли кто-нибудь дать мне пример того, как это работает внутри цикла foreach и как я могу отобразить это значение в представлении?

Большое спасибо =)

1 Ответ

1 голос
/ 11 ноября 2011

Вы уже настроили контекст / хранилище базы данных для связи с базой данных в вашем проекте MVC?Ниже я предполагаю, что у вас есть контекст базы данных с именем dbContext.

Примечание. Если вы не используете Razor, замените «@» на «<%» и закройте на «%>"

Вы можете поместить элемент либо в ViewBag, либо в Model (я предпочитаю Model), как показано ниже.Я не уверен, что вы хотите сделать с этими подсчетами, поэтому я поместил их в список.Вам понадобится класс для размещения информации о ваших впечатлениях, я добавил ее ниже:

Код модели:

    public class MyModel
    {
        public class ImpressionInfo //just used to store your results sub class of the model
        {
            public ImpressionInfo(id, impression, diaryImpressionCount)
            {
                Id = id;
                Impression = impression;
                DiaryImpressionCount = diaryImpressionCount
            }

            public int Id { get; set; }
            public int Impression { get; set; } //is this an int? you didn't say
            public int DiaryImpressionCount { get; set; }
        }

        public MyModel()
        {
            var impressionInfo = new List<ImpressionInfo>()

            foreach (var di in dbContext.DiaryImpressions)
            {
                ImpressionInfos.Add(new ImpressionInfo(
                    di.Id,
                    di.Impression,
                    dbContext.DiaryPosts
                        .Count(dp => dp.ImpressionsId == di.ID));
            }
        }

        public List<ImpressionInfo> ImpressionInfos { get; set; }

, затем в виде

Просмотр кода:

    @model MyModel

    @if(Model.ImpressionInfos.Count > 0)
    {
        <table>
            <tr>
                <td>Impression</td>
                <td>Count</td>
            </tr>
        foreach (var i in Model.ImpressionInfos)
        {
            <tr>
                <td>@i.Impression</td>
                <td>@i.DiaryImpressionCount</td>
            </tr>
        }
    }
    else
    {
        <p>No Impression infos</p>
    }

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...