Ответы пользователя по тегу C#
  • Как привести Date обьект js в DateTime формат C#?

    @kttotto
    пофиг на чем писать
    К Вам приходит дата с учетом часового пояса. Тип DateTime часовой пояс не учитывает, значит Вы будете терять время при приведении. Если время зависит от локали и часовой пояс необходим, то принимать время нужно в формате DateTimeOffset (ну или приводить к нему, если принимаете строку), тогда время теряться не будет.
    Ответ написан
  • Как в NewTonSoft задать схему десериализации ответа?

    @kttotto
    пофиг на чем писать
    Думаю, что ошибка в строке
    string json2 = @"{['Шляпа','Кепка']}";
    Все, что в фигурных скобках - это объект, но у Вас массив. Попробуйте
    string json2 = @"['Шляпа','Кепка']";
    Ответ написан
    1 комментарий
  • Можно ли объявлять делегат в одном классе (методы там же), а создавать переменную, присваивать адрес метода, вызывать в другом классе?

    @kttotto
    пофиг на чем писать
    Есть такое понятие, как "область видимости". Если тип делегата внутри класса, то получить его можно только через экземпляр этого класса, т.е. через объект типа это класса. Чтобы иметь возможность создать делегат в другом классе, надо либо сам делегат вынести из него, либо, как я уже говорил, обратиться к экземпляру класса.
    Ответ написан
    6 комментариев
  • Что такое обход списка? Является ли вывод на экран списка его обходом?

    @kttotto
    пофиг на чем писать
    Сам вывод - нет. Его можно обойти не выводя никакой инфы о нем. Но вывести значения невозможно, не обойдя его.
    Ответ написан
    3 комментария
  • Объект с полями (one-to-many) возвращается со значением null в полях в Entity Framework, как это решить?

    @kttotto
    пофиг на чем писать
    Обратите внимание в документации EF на метод Include(), зачем он нужен и что он делает.
    Если Вам нужно, чтобы при запросе Word, кроме данных самой сущности, еще подтянулись зависимые, нужно сделать так
    var word = db.Words.Include(x => x.LearnDay).Where(p => p.Id == testId).FirstOrDefault();
    Ответ написан
    Комментировать
  • Как сделать так чтоб не появлялась ошибка CS7036?

    @kttotto
    пофиг на чем писать
    Ну так а зачем Вы засунули класс наследник внутрь класса Vector?
    spoiler
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    namespace laba3
    {
        public class Vektor
        {
            public readonly double x, y, z;
            public Vektor(double x, double y, double z)
            {
                this.x = x;
                this.y = y;
                this.z = z;
            }
    
            //summa
            public Vektor Add(Vektor V)
            { return new Vektor(this.x + V.x, this.y + V.y, this.z + V.z); }
    		
            //raznost
            public Vektor Razn(Vektor V)
            { return new Vektor(this.x - V.x, this.y - V.y, this.z - V.z); }
    		
            public double Length()
            { return Math.Sqrt(x * x + y * y + z * z); }
    		
            public double Length(Vektor V)
            { return (Math.Sqrt(x * x + y * y + z * z) * Math.Sqrt(x * x + y * y + z * z));}
    		
            //skalarnoe proizvedenie
            public virtual double Skalar(Vektor V)
            { return x * this.x + y * this.y + z * this.z; }
    		
            //umnozenie na skalar a
            public  double Uskalar()
            {
                double a = 1;
                return a * this.x + a * this.y + a * this.z;
    		}
            //sravnenie
            public bool Equals(Vektor V)
            {
                if (!(V is Vektor))
                { return false; }
                return base.Equals(V);
            }
    		
            public override string ToString()
            {
                return $"{x} {y} {z}";
            }
    	}
    	
        //класс наследник +переопределение
        class Naslednik : Vektor
        {
            public override double Skalar(Vektor V)
            {
                base.Skalar(V);
                return 2*x * this.x + 2*y * this.y + 2*z * this.z; ;
            }
        }
    	
        public class Demo
        {
            public static void Main()
            {
                
                Vektor A = new Vektor(10, 7, 9);
                Vektor B = new Vektor(3, 5, 7);
                Console.WriteLine("A vektor: x={0},y={1},z={2}", A.x, A.y, A.z);
                Console.WriteLine("B vektor: x={0},y={1},z={2}", B.x, B.y, B.z);
                Console.WriteLine($"Summa : {A.Add(B)}");
                Console.WriteLine($"Raznost: {A.Razn(B)}");
                Console.WriteLine($"The scalar *****: {A.Skalar(B)}");
                Console.WriteLine("Dlina A  :   {0}    ", A.Length());
                Console.WriteLine("Dlina B  :   {0}  ", B.Length());
                Console.WriteLine($"Umnozenie na skalar-Vektor A: {A.Uskalar()}");
                Console.WriteLine($"Umnozenie na skalar-Vektor B: {B.Uskalar()}");
                Console.WriteLine($"Vektor v kvadrate-Vektor A: {A.Length(B)}");
                Console.WriteLine($"Ravni li: {A.Equals(B)}");
    
    
                Console.WriteLine("Press Enter...");
                Console.ReadLine(); // Чтобы программа сразу не закрылась
            }
        }
    }
    Ответ написан
  • Как смапить свойство типа 'Dictionary' в Entity Framework?

    @kttotto
    пофиг на чем писать
    Вы в одном поле собираетесь хранить целай массив? А потом, чтобы достать одно значение будете читать весь массив из поля?
    Это не верный подход, но можно реализовать сериализацией массива в json при записи и при чтении - десериализацией. Например:

    public class VmWord
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Localization { get; set; }
    
        [NotMapped]
        public Dictionary<string, string> Localizations 
        {
            get { return JsonConvert.DeseriazeObject<Dictionary<string, string>>(Localization.ToList()); }
            set { Localization = JsonConvert.SerializeObject(value); }
        }
    }

    Но верный подход будет по другому:

    public class VmWord
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public virtual List<string> Localizations { get; set; }
    }
    
    public class Localization
    {
        public int Id { get; set; }
        public string Key { get; set; }
        public string Value { get; set; }
        public virtual VmWord VmWord { get; set; }
    }

    И достать по ключу потом:

    context.VmWord.Localizations.FirstOrDefault(x => x.Key == key)?.Value;
    Ответ написан
    Комментировать
  • Две и более строки подключения и сессии?

    @kttotto
    пофиг на чем писать
    Вы можете сделать сколько угодно конекшин стрингов в настройках, у каждого свое имя. Сделайте абстракцию над подключением к бд, туда будете передавать имя конекшина и работайте с методами этой абстракции уже.

    В простом виде это примерно так
    <connectionStrings>
      <add name="DB1Connection" connectionString="data source=(local);initial catalog=myDB1;" />
      <add name="DB2Connection1" connectionString="data source=(local);initial catalog=myDB2;" />
      <add name="DB3Connection1" connectionString="data source=(local);initial catalog=myDB3;" />
    </connectionStrings>
    
    connectionStringName = "DB3Connection1";
    
    public class MyDbContext : DbContext
    {
    	public MyDbContext(string connectionStringName) : base(connectionStringName)
    	{	}
    }

    Если схемы баз один одинаковые, то достаточно одного класса контекста

    Как только пользователь тыкнул на другой сервер, Вы разлогинили его, создали новый конекшин и залогинили его по новой, но в выбранном контексте и перегрузили страницу.
    Ответ написан
    4 комментария
  • Поэтапный (частичный) перевод веб-приложения с MVC3 на MVC5 или Core?

    @kttotto
    пофиг на чем писать
    Тут надо в код смотреть, все от многого зависит: как реализованы права, роли, как аутентификация работает. В мвс3 идентити еще не было, надо было руками мембешип провайдер реализовывать, в каком виде Вы его переносить собираетесь?
    И потом, почему на мвс5, а не сразу на коре?
    Не зная структуры, тяжело что-то сказать однозначно. Но я бы, наверное, в такой ситуации завел новый проект и просто по тихому переносил в него куски кода, которые можно перенести, а что-то писал по новой. Если переносить с хвоста, то можно упереться в тупик, когда ядро невозможно будет изменить.
    Ответ написан
    Комментировать
  • Как можно записать String в Int с автоматическим упрощением?

    @kttotto
    пофиг на чем писать
    Метод Convert.ToInt32(string) конвертирует строковое значение в эквивалентное целое число. Этот метод не занимается парсингом Вашего выражения, чтобы построить из Вашей строки дерево выражений и конечно не пытается вычислить конечное значение.

    А как можно преобразовать строку в Int и в итоге получить 9 в функции

    Можно все. Но для этого нужно либо самому реализовать подобный функционал, либо на просторах найти готовую реализацию. Родного такого метода в C# нет.
    Ответ написан
  • Что нужно знать начинающему разработчику asp.net mvc?

    @kttotto
    пофиг на чем писать
    получается чтобы стать начинающим разработчиком, необходимо сходу знать весь стек, пускай и не совсем глубоко?

    Совершенно верно. К этому списку еще sql добавьте.
    Ответ написан
  • На сколько сильно программирование .ASP NET MVC зависит от C#?

    @kttotto
    пофиг на чем писать
    Непонятно зачем изучать ASP NET MVC, если не собираешься под него писать код. А если собираешься писать код, то каким образом это делать не зная самого языка C#?

    Ответ: НЕТ, не стоит.
    Ответ написан
    Комментировать
  • Как узнать порядковый номер строки в столбце(Entity Framework С#)?

    @kttotto
    пофиг на чем писать
    В бд строки могут лежать в любом непредсказуемом для Вас порядке. И какая строка на каком месте находится, Вас интересовать не должно. То, что Вы видите строки в каком то порядке, это сортировка по дефолту. Если Вы хотите взять порядковый номер строки, то нужно указать порядковый номер относительно какого то поля, т.е. таблицу прежде надо отсортировать по нужному полю (Id, DateTime, Name и т.д.), а потом можете брать запись отсчитывая с любого конца. Поэтому это примерно будет выглядеть так
    bd.User.OrderBy(x => x.Id).ElementAt(5);
    Если надо именно порядковый номер узнать определенной записи, то можно так
    bd.User.OrderBy(x => x.Id).ToList().FindIndex(x => x.Name == "Vasya");
    Ответ написан
    1 комментарий
  • C#, Ошибка System.NullReferenceException при работе с базой данных MySql. Как исправить?

    @kttotto
    пофиг на чем писать
    Одного слова NullReferenceException мало для предположений. Вам наверняка вместе с этим и стектрей дает и строку в которой ошибка и возможно даже при вызове какого метода на каком поле. Это сообщение говорит о том, что что-то не проинициализированно и Вы на нем хотите либо свойство прочитать, либо метод вызвать.

    Судя по коду могу предположить, что Select Login from Accounts WHERE ... не может дать Вам скалярное значение. Нужно либо запрос другой писать, либо вызывать другой метод на command.
    Ответ написан
    Комментировать
  • Заменить последний символ строки на большой в C#, как?

    @kttotto
    пофиг на чем писать
    На коленке, но примерно так
    var lines = File.ReadLines(path);
    foreach(var line in lines)
    {
    	var index = line.Length - 1
    	line[index] = line[index].ToUpper()
    }
    
    var text = string.Join(lines);
    File.WriteAllText(path, text);
    Ответ написан
    Комментировать
  • Файл занят своим же процессом ....!?

    @kttotto
    пофиг на чем писать
    Вы не можете сохранить файл, который читаете. Вы можете открыть файл для чтения и можете открыть для записи. Файловый поток нельзя открыть одновременно в двух режимах, и на чтение, и на запись. Если Вы открыли файл на чтение, то прежде чем его перезаписать, поток надо закрыть.

    В Вашем случае возможно не использовался using или dispose, что-то, что закроет поток, ну или явно закрыть поток.
    В общем, порядок такой: открыли файл на чтение (получили текст или байты), закрыли поток, изменили содержимое, открыли файл на запись, перезаписали, закрыли поток.

    Если Вы используете класс File для работы с файлами, то закрытие он выполняет самостоятельно автоматом. Если же поток открывается, например, через StreamWriter, то за закрытием надо следить самостоятельно.
    Ответ написан
    Комментировать
  • Где ошибка у меня в парсере html C#?

    @kttotto
    пофиг на чем писать
    Кажется Вы не разбирались в работе парсера и не читали документацию AngleSharp.

    Во первых, как дебажить парсер по https://mysite/forums? Представлять мысленно, догадываясь интуитивно?

    Во вторых, Вы хотите получить значение атрибута data-previewurl, но результат mysite.ru/threads/61443, а это уже значение другого атрибута - href, а в вопросе Вы говорите "но заголовки не парсятся". Вы определитесь: Вам нужен заголовок или значение атрибута и какого?

    В третьих, если бы Вы прочитали документацию, то узнали бы как получить значение атрибута, я в Вашем проекте добавил в метод Parse
    if (item.HasAttribute("data-previewurl"))
    {
    	list.Add(item.GetAttribute("data-previewurl"));
    }

    Для этого пришлось захардкодить Ваш html блок.
    Ну и собственно ваша потребность будет выглядеть как
    "mysite.ru/" + item.GetAttribute("data-previewurl")

    Все прекрасно работает.
    Ответ написан
    Комментировать
  • Как уменьшить расход памяти в DataGrid у WPF?

    @kttotto
    пофиг на чем писать
    Однозначно нужен постраничный вывод. Никто такие объемы за раз не выводит.
    В крайнем случае подгрузка по мере скрола, с удалением из грида верхней части.
    Даже в ширину не обязательно все выводить, можно не самые критичные данные скрыть за кнопочкой "подробнее" и подгружать для просмотра по клику как дополнительные данные.
    Ответ написан
    Комментировать
  • Как разобрать ответ JSON в C#?

    @kttotto
    пофиг на чем писать
    0. Нет необходимости инициализировать Res перед десериализацией, DeserializeObject вернет объект и Res будет указывать на него.

    1. Десериализовать надо к конкретному типу, а так он десериализует к object и нужные Вам поля будут не видны.
    Res = JsonConvert.DeserializeObject<RootObject>(Response);
    2. Список нужно указывать с конкретным типом, иначе это будет опять список object
    public List<Sm> sms { get; set; }

    3. Если Res.sms это список, то поля text у него не будет, Вам нужно взять конкретный объект из этого списка и у него уже читать поле text.
    Res.sms[0].text

    4. В итоге все сводится к двум строчкам
    var Res = JsonConvert.DeserializeObject<RootObject>(Response);
    var strTextSMS = Res.sms[0].text;  // индекс 0 для примера
    Ответ написан
    Комментировать