Я адаптировал этот код из другой статьи здесь, посвященной SO . Он делает снимок экрана рабочего стола и записывает его в файл с именем «test.jpg».
Меня интересует сохранение данных JPEG прямо в буфер для отправки по сети. Я почти уверен, что GdipSaveImageToStream
- это то, что мне нужно, но я не могу понять, как это работает. Параметр GpImage
особенно сбивает с толку.
Я ценю любую помощь, которую вы можете предоставить. {new Book () {Title = "artemis fowl: the time paradox", Pages = 380}, new Book () {Title = "the leutenant", Pages = 258} ...
Вот некоторые примеры данных:
List books = new List()
{
new Book(){Title = "artemis fowl: the time paradox", Pages = 380},
new Book(){Title = "the lieutenant", Pages = 258},
new Book(){Title = "the wheel of time", Pages = 1032},
new Book(){Title = "ender's game", Pages = 404},
new Book(){Title = "the sphere", Pages = 657}
};
Справочная информация:
Вышеупомянутое использует упрощенную версию класса Book. Конечно, он будет содержать много полей. Моя конечная цель - позволить пользователю выполнять «расширенный» поиск, позволяющий пользователю указать любое поле и дополнительно разрешить пользователю указывать ключевые слова, используя логическую алгебру для определенного поля.
например: В текстовое поле поиска по названию: + (торт | тесто) + ~ демон
Вышеупомянутое будет означать: Найдите все книги, в названии которых есть слова «the», либо «cake», либо «кондитерские», и не содержит слова «демон».
Задача:
Детские шаги приведут к окончательному решению. Итак, изначально у меня был следующий код:
List> fs = new List>()
{
b => b.Title.Contains("me"),
b => b.Title.Contains("the")
};
var q2 = from b in books select b;
foreach (var f in fs)
q2 = q2.Where(f);
foreach (Book b in q2)
{
Console.WriteLine("Title:\t\t{0}\nPages:\t\t{1}\n",
b.Title, b.Pages);
}
Приведенный выше код работает нормально. Он ищет книги, в названии которых есть «И» И «я».
Фаза 2
Теперь фильтр имеет тип Func Book , bool>. Этот класс будет сгенерированным классом Entity Framework, и я не хочу использовать его в моем слое пользовательского интерфейса, где будет вводиться поисковая фраза и будут сгенерированы поисковые фильтры для передачи в BLL.
Итак, у меня есть следующее три попытки:
var q = from b in books select b;
List> filters = new List>()
{
s => s.Contains("me"),
s => s.Contains("the"),
};
//This works...
for (int i = 0; i != filters.Count; ++i)
{
Func daF = filters[i];
q = q.Where(b => (daF(b.Title)));
}
//This produces an exception...
//Due to index in query?
// for (int i = 0; i != filters.Count; ++i)
// {
// q = q.Where(b => ((filters[i])(b.Title)));
// }
//This runs but doesn't produce the proper output
// foreach (Func filter in filters)
// q = q.Where(b => filter(b.Title));
foreach (Book b in q)
{
Console.WriteLine("Title:\t\t{0}\nPages:\t\t{1}\n",
b.Title, b.Pages);
}
Первая закомментированная часть запускает исключение индексатора вне диапазона, заявляя, что значение i равно 2.
Вторая закомментированная часть запускается и производит вывод, но распечатывает ЧЕТЫРЕ из 5 книги ... все, ЗА ИСКЛЮЧЕНИЕМ книги под названием "игра Эндера". Это неправильно ...
Итак, прочитав мой пост, Я вижу, что не смог сдержать свою дурную привычку объяснять каждую мелочь ...
Итак, поехали. Пожалуйста, объясните, почему разные результаты. И я думаю, вы могли бы намекнуть на возможные улучшения моего текущего «решения».