Я пытаюсь изучить, как связать набор IEnumerable LINQ с повторителем

Предполагая, что у вас есть соответствующее предложение ORDER BY, используйте ROW_NUMBER() OVER (ORDER BY ...) в обратном направлении для генерации нисходящих чисел:

-- DECLARE @number INT = 21;
-- the variable is not needed, the total number of stars will match total number of rows

WITH your_tbl AS (
    SELECT number
    FROM master..spt_values
    WHERE type = 'p' AND number BETWEEN 1 AND 21
)
SELECT number, REPLICATE('*', ROW_NUMBER() OVER (ORDER BY number DESC))
FROM your_tbl
ORDER BY number
10
задан Ian Roke 6 May 2009 в 20:26
поделиться

7 ответов

Вы получаете обратно множество строк без имени. Если вы хотите использовать драйвер имени свойства, вы можете создать анонимный тип и сказать:

var result = from driver in driverNames
             orderby driver
             select new { Driver = driver };

, затем выполните привязку данных.

Я полагаю, вы также можете Eval (".") для оценки объекта сам по себе, а не собственность. Также, как несколько человек сказали ниже, вы можете использовать <% # Container.DataItem%> .

9
ответ дан 3 December 2019 в 22:01
поделиться

Измените <% # Eval ("driver")%> на

<%# Container.DataItem %>
5
ответ дан 3 December 2019 в 22:01
поделиться

try

<%# Container.DataItem.ToString() %>

eval ищет свойство с именем driver, но у вас есть имя драйвера actall в виде строки. Это было бы похоже на вызов "имя драйвера" .DriverName. Перечисление вашей коллекции работает с фактическими элементами. Если бы у вас действительно была коллекция драйверов типа IList, это сработало бы.

1
ответ дан 3 December 2019 в 22:01
поделиться

Поскольку строка не имеет свойства, называемого «драйвер», и вы используете список строк, это не сработает. Попробуйте заменить оператор Eval на Container.DataItem

0
ответ дан 3 December 2019 в 22:01
поделиться

вы уверены, что нет типа? поскольку код выглядит нормально.

вы также можете использовать select new {Driver = driver, DriverAge = driverage, etc ..}

, затем на своей странице ASPX вы используете следующее

<ItemTemplate>
<div class="Driver"><%# Eval("Driver") %></div>
<div class="DriverAge"><%# Eval("DriverAge ") %></div>   
</ItemTemplate>

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

0
ответ дан 3 December 2019 в 22:01
поделиться

или просто <% # Eval ("result.Driver")%>

0
ответ дан 3 December 2019 в 22:01
поделиться

Я понимаю, что это старый вопрос, но я хотел указать, что строковый массив уже является IEnumerable и вы можете просто привязать массив непосредственно к ретранслятору, используя ответ Мехрдада:

<%# Container.DataItem %>
1
ответ дан 3 December 2019 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: