Как мне сгенерировать поток из строки?

Вам нужно сохранить ваш 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();
686
задан Peter Mortensen 22 October 2017 в 22:04
поделиться

4 ответа

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?

904
ответ дан 22 November 2019 в 21:35
поделиться

Я думаю, вы можете извлечь выгоду из использования MemoryStream . Вы можете заполнить его строковыми байтами, полученными с помощью метода GetBytes класса Encoding class .

8
ответ дан 22 November 2019 в 21:35
поделиться

Используйте класс MemoryStream , вызывая Encoding.GetBytes , чтобы сначала превратить вашу строку в массив байтов.

Потребуется ли вам впоследствии TextReader в потоке? Если это так, вы можете напрямую указать StringReader и обойти этапы MemoryStream и Encoding .

23
ответ дан 22 November 2019 в 21:35
поделиться

Вот так:

private Stream GenerateStreamFromString(String p)
{
    Byte[] bytes = UTF8Encoding.GetBytes(p);
    MemoryStream strm = new MemoryStream();
    strm.Write(bytes, 0, bytes.Length);
    return strm;
}
9
ответ дан 22 November 2019 в 21:35
поделиться
Другие вопросы по тегам:

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