Я пытаюсь выполнить фильтрующий запрос xlinq в c # 4.0, поэтому я могу привязаться к DataContext.код такой:
public IEnumerable<XElement> Filter(int min = 0, int max = int.MaxValue)
{
IEnumerable<XElement> selected = (
from x in xmlFile.Elements("Product")
where (int)x.Element("Price") >= min &&
(int)x.Element("Price") <= max
select x);
return selected;
}
xmlFile - это XElement с загруженным внешним XML-файлом.структура файла xml выглядит примерно так:
<Stock>
<Product>
<Name />
<Price />
<Quantity />
</Product>
...
</Stock>
Я не получаю никаких ошибок при сборке или запуске, но переменная selected
получает только ноль (даже без предложения where).При наведении курсора мыши на переменную во время отладки отображается тип System.Linq.Enumerable.WhereEnumerableIterator.Если я просто верну xmlFile, все будет хорошо, но мне действительно нужно выполнить фильтрацию!
EDIT
, насколько я исследовал, проблема в том, что "Инструкция xmlFile.Elements ("Product") ".Я не знаю, как это объяснить, поэтому я сделал скриншот (в моем коде я на самом деле использую «Respuesto» вместо «Products», я перевел это здесь, чтобы упростить):
(Этоне позволит мне вставить изображение, потому что я новый пользователь, но он здесь: http://i.stack.imgur.com/XTt8r.png
Я использую эту функцию в своем коде как DataContext, например:
gridpricelist.DataContext = Conn.Filter(min: Convert.ToInt32(minprice.Text),
max: Convert.ToInt32(maxprice.Text));
minprice и maxprice являются текстовыми полями, и событие KeyUp вызывает функцию сверху
EDIT2
Я понял это, см. Мой ответ. Но я не могу объяснить, почему этоработает таким образом, кто-то может помочь мне понять?
Заранее спасибо!