Athul MS Ответов: 4

как передать список linq для просмотра в mvc


код приведен ниже
var IS = (from c in xfeed.ciqCompanies
      join s in xfeed.ciqSecurities on c.companyId equals s.companyId
      join ti in xfeed.ciqTradingItems on s.securityId equals ti.securityId
      join e in xfeed.ciqExchanges on ti.exchangeId equals e.exchangeId
      join fp in xfeed.ciqLatestInstanceFinPeriods on c.companyId equals fp.companyId
      join pt in xfeed.ciqPeriodTypes on fp.periodTypeId equals pt.periodTypeId
      join fd in xfeed.ciqFinancialDatas on fp.financialPeriodId equals fd.financialPeriodId
      join di in xfeed.ciqDataItems on fd.dataItemId equals di.dataItemId
      where fd.dataItemId == 3069
      && fp.periodTypeId ==1
      && fp.fiscalYear>=DateTime.Now.AddYears(-5).Year && fp.fiscalYear<=DateTime.Now.Year
      && ti.tickerSymbol == tickerSymbol
      && e.exchangeSymbol == exchangeSymbol
      select new
      {
          c.companyName,
          c.companyId,
          ti.tickerSymbol,
          e.exchangeSymbol,
          pt.periodTypeName,
          fp.fiscalYear,
          fd.dataItemId,
          di.dataItemName,
          fd.dataItemValue
      }).ToList();

4 Ответов

Рейтинг:
2
Рейтинг:
0

Krunal Rohit

Не проходите мимо них anonymous введите в поле зрения. Достаточно создать один ViewModel из ваших моделей и сделайте запрос на него.

Прочтите это например:
http://stackoverflow.com/questions/20319324/how-to-pass-custom-linq-query-to-view[^]
http://stackoverflow.com/questions/13037282/pass-linq-query-to-view[^]

-КРОНА


Рейтинг:
0

F-ES Sitecore

Создайте конкретный класс (MyViewModel или что-то еще), который имеет свойства для ваших полей, например CompanyName, CompanyID, TickerSymbol и т. д., и создайте список "myviewmodel" из вашего запроса, а не анонимный тип, который вы создаете сейчас.

select new MyViewModel
      {
          CompanyName = c.companyName,
          CompanyID = c.companyId,
          ...
      }).ToList();


Пусть ваш вид принимает список<MyViewModel> как его тип. Не уверен, что приведенный выше код является точным синтаксисом, который вам нужен, google для преобразования запроса linq в конкретный класс, если это не так.


Рейтинг:
0

Member 14833140

Во-первых, вы создаете конкретный класс "InfoViewModel", например, который имеет свойства для ваших полей в операторе select: CompanyName, CompanyID, TickerSymbol и т. д,

public class InfoViewModel<br />
    {<br />
        public string CompanyName { get; set; }<br />
        public string CompanyID { get; set; }<br />
        etc...<br />
    }


затем создайте список<infoviewmodel> из вашего запроса в PageModel
public List<InfoViewModel> Info= new List<InfoViewModel>();
а затем создайте цикл foreach после инструкции select, чтобы сохранить результат запроса в созданном вами списке, чтобы не возникло конфликта относительно ошибки анонимного типа, с которой вы столкнетесь.
<br />
select new <br />
      {<br />
          CompanyName = c.companyName,<br />
          CompanyID = c.companyId,<br />
          etc...<br />
      }).ToList();<br />
<br />
<br />
 foreach (var item in q)<br />
                {<br />
                    InfoViewModel info = new InfoViewModel();<br />
                    info.CompanyName = item.CompanyName ;<br />
                    info.CompanyID = item.CompanyID ;<br />
                    etc...<br />
                    Info.Add(info);<br />
                }<br />


затем в ViewModel .cshtml:
<tbody><br />
                @foreach (var item in Model.Info)<br />
                {<br />
                    <tr><br />
                        <td><br />
                            @Html.DisplayFor(modelItem => item.CompanyName)<br />
                        </td><br />
                        <td><br />
                            @Html.DisplayFor(modelItem => item.CompanyID)<br />
                        </td><br />
                    </tr><br />
                }<br />
            </tbody>


Richard Deeming

Это уже предлагалось в решениях 1 и 2, которые были опубликованы пять лет назад.