Вам нужно сохранить ваш int
в переменной, чтобы EntityFramework не пыталась вытащить весь массив в область видимости.
var myInt = myInts[0];
var query = (from d in db.MYTABLE
where d.RELID.Equals(myInt)
select d.ID).Distinct();
List<int?> urunidleri = query.ToList();
public static Stream GenerateStreamFromString(string s)
{
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.Write(s);
writer.Flush();
stream.Position = 0;
return stream;
}
Не забудьте использовать Использование:
using (var stream = GenerateStreamFromString("a,b \n c,d"))
{
// ... Do stuff to stream
}
О том, что StreamWriter
не удаляется. StreamWriter
- это просто оболочка для основного потока, и она не использует какие-либо ресурсы, которые необходимо удалить. Метод Dispose
закроет базовый Stream
, в который записывает StreamWriter
. В данном случае это MemoryStream
, который мы хотим вернуть.
В .NET 4.5 теперь есть перегрузка для StreamWriter
, которая сохраняет основной поток открытым после того, как модуль записи удален. , но этот код делает то же самое и работает и с другими версиями .NET.
См. Есть ли способ закрыть StreamWriter, не закрывая его BaseStream?
Я думаю, вы можете извлечь выгоду из использования MemoryStream . Вы можете заполнить его строковыми байтами, полученными с помощью метода GetBytes класса Encoding class .
Используйте класс MemoryStream
, вызывая Encoding.GetBytes
, чтобы сначала превратить вашу строку в массив байтов.
Потребуется ли вам впоследствии TextReader
в потоке? Если это так, вы можете напрямую указать StringReader
и обойти этапы MemoryStream
и Encoding
.
Вот так:
private Stream GenerateStreamFromString(String p)
{
Byte[] bytes = UTF8Encoding.GetBytes(p);
MemoryStream strm = new MemoryStream();
strm.Write(bytes, 0, bytes.Length);
return strm;
}