Ответы пользователя по тегу C#
  • Как преобразовать такой конструктор по С#?

    @kttotto
    все, что .NET
    ptivate int _num;
    private int _den;
    
    Drob(int num, int den)
    {
        _num = num;
        _den = den;
    }
    
    public int Num
    {
        get
        {
            return _num;
        }
    }
    
    public int Den
    {
        get
        {
            return _den;
        }
    }
    
    public override strin ToString()
    {
        ...
        _num = -_num;
        _den = Math.Abs(_den);
        ...
    }
    Ответ написан
  • Как добавить данные в базу при создании?

    @kttotto
    все, что .NET
    Связь указывается либо через атрибуты, либо через fluent api, это легко гуглится. У Вас связь одни ко многим, один сервис имеет много категорий, поэтому EF при создании таблиц добавит поле ServiceId в таблицу Category. По-видимому, Вам надо явно указать туда id сервиса для связи данных, для этого в модель Category это поле нужно добавить.
    Ответ написан
  • Как посчитать кол-во вхождение в string (C#)?

    @kttotto
    все, что .NET
    Если нужно только кол-во, то можно еще так
    int count = (source.Length - source.Replace(findString , "").Length) / findString.Length;
    Ответ написан
  • Какая логика между разными операторами?

    @kttotto
    все, что .NET
    Никита Сальников,
    есть числа то и ответ должен быть числа

    Неверно. Условием может быть число, строка, или и то и другое (объект), а в зависимости от выполнения условия операция может производится так же над чем угодно (числом, строкой и т.д.). Грубо говоря "если один, то допишу в конец строки 'a', если два, то допишу в конец строки 'b' ". Может наоборот: "если 'one' прибавлю к результату 2, если 'two', прибавлю 4" и т.д.

    Всю эту задачу можно было бы переписать как то так
    var x = 0;
    var result = "";
    while (x < 30) {
      if(x == 0 || x == 8 || x == 15) {
        result += "a";
      }
      if(x == 1 || x == 7) {
        result += " ";
      }
      if(x == 2 || x == 9 || x == 10 || x == 16) {
        result += "n";
      }
      
      ... // и т.д.
      x++;
    }

    где x просто порядковый номер буквы в строке. Смысл тот же, найти зависимость расположения частей строки в целой строке.
    Таких зависимостей, в данном случае, можно найти сколь угодно. Автор книги предложил свой вариант, просто запутал условия, чтобы интересней было искать ответ.
    Ответ написан
  • Как реализовать чат в клиент-сервером приложении c#?

    @kttotto
    все, что .NET
    Для таких вещей есть библиотека SignalR, с кучей примеров как на ней написать чат, например.
    В общем, советую копать в эту сторону.
    Ответ написан
  • Правильная архитектура при построение Web приложения?

    @kttotto
    все, что .NET
    Архитектура никак не зависит от стека.
    5e6ddff504334597793261.png
    Где здесь, хоть что-то указывает на стек?
    При "правильной архитектуре" каждая часть может быть написана на чем угодно (в пределах разумного, конечно) и все будет работать как часы.
    Ответ написан
  • Вопрос о делегатах и рефлексии типов в C#. Как по делегату узнать, к какому полю объекта обращаются в теле делегата?

    @kttotto
    все, что .NET
    Да, реально. Это работа с деревом выражения, как точка отсчета для тебя тут, больше примеров тут.
    Ответ написан
  • Как побороть ошибку преобразования?

    @kttotto
    все, что .NET
    В Вашем случае i это отложенный сложный запрос/выборка, еще невыполненный. Вы пытаетесь его преобразовать в другой тип. Попробуйте его, на всякий случай, сначала закрыть ToList(), а затем преобразовать его либо через Select, либо через Cast. В принципе, если внутри запроса ничего сложного нет, то можно и не делать ToList().
    Ответ написан
  • Как проверить на null Vue.JS из Модели ASP.Net?

    @kttotto
    все, что .NET
    Судя по тому, что Вы хотите сделать split, предполагаю, что Model.Tags имеет тип string.
    Тогда, как вариант, можно сделать так
    addTags: function() {
    	this.tags = @Json.Serialize(Model?.Tags?.Split(',') ?? []);
    }


    Ошибка в этой строке
    if(@Model != null && @Model.Tags != null)
    потому, что @Model приведется к string в разметке, а @Model.Tags вставится как строка как есть. И в разметке выйдет что-то такое
    if(System.Object != null && tag1,tag2,tag3 != null) { ... }

    Ну и понятно, что такая разметка в браузере даст ошибку. Поэтому, перед тем как вставить модель в разметку js, лучше делать сериализацию к json. Ну либо делать как-то так
    if('@(Model?.Tags ?? "")'.length > 0) { ... }
    Ответ написан
  • Как передавать данные в контроллер??

    @kttotto
    все, что .NET
    Думаю, что проблема в
    JSON.stringify(books)
    т.к. по сути этой строкой Вы отправляете string, а не объект. Несовпадение типа, он его и не видит.
    Если хотите в методе объект принять, не нужно его к строке преобразовывать, можно просто
    data: books,
    Но что-то мне подсказывает, что в Вашем варианте и здесь могут быть проблемы. Зачем Вы принимаете JObject?
    Преобразуете его потом, примите его как есть массивом
    public async Task<JsonResult> Settings(object[] books)

    А еще лучше, типизируйте как положено, ну а затем сделаете что-то вроде JObject.FromObject(books).

    PS:
    а метод Settings возвращает ошибку не выполняя метод.

    В таких случаях хорошо бы и текст ошибки к вопросу прикладывать.
    Ответ написан
  • Как передать массив из c# в javascript?

    @kttotto
    все, что .NET
    Судя по тэгу Вы хотите это сделать в ASP MVC приложение.
    Там есть вариант сделать это на вьюшке с помощью Razor

    <script>
    	var model = @Json.Serialize(Model.yourArray);
    	
    	var model2 = @Html.Raw(JsonConvert.SerializeObject(Model.yourArray));
    	
    	var model3 = [@Model.yourArray[0], @Model.yourArray[1], @Model.yourArray[2]]
    </script>
    Ответ написан
  • C#. Тип "Settings" уже определяет член "Save" с такими же типами параметрами. Что делать?

    @kttotto
    все, что .NET
    При перегрузке методы должны отличаться сигнатурой - отличаться типом или кол-вом входящих параметров. Если при вызове метода Save Вы всегда знаете какой параметр или параметры хотите сохранить, то в Вашем случае я вижу два варианта:
    первый, если таких перегрузок требуется два-три, то каждый метод можно назвать по другому, например SaveMacDir, SaveAccpath и т.д.
    второй, если этих парметров три, то два из них сделать необязательными
    public void Save(string accpath, string macDir = null, string stId = null)
    {
    	try
    	{
    		using(var sw = new StreamWriter("**"))
    		{
    			if(!string.IsNullOrEmpty(accpath))
    			{
    				sw.WriteLine(accpath);
    				AccPath = accpath
    			}
    			if(!string.IsNullOrEmpty(macDir))
    			{
    				sw.WriteLine(macDir);
    				Macros_Directory  = macDir;
    			}
    			if(!string.IsNullOrEmpty(stId))
    			{
    				sw.WriteLine = stId;
    				SteamID = stId;
    			}
    		}
    	}
    	catch(Exception ex) { }
    }

    И вызывать их как
    Save(accpath)
    Save(accpath, macDir)
    Save(accpath, macDir, stId)
    Save(null, macDir, stId)
    Save(accpath, null, stId)
    Ответ написан
  • Что изучать ADO NET или Entity Framework?

    @kttotto
    все, что .NET
    Не знаю, что за "умный" модератор посчитал, что этот вопрос Стоит ли использовать ADO .NET взамен Dapper и EF Core? тоже самое, что текущий. Суть вопросов абсолютно разная, хоть у буквы у некоторых слов одинаковые. Поэтому отвечаю sergeyiljin на его вопрос.

    На все должен быть смысл. EF и Dapper (и вообще ORM) создавались не "от нечего делать", в них была потребность. Хорошая ORM в нужном месте облегчает жизнь разработчику как в разработке кода, так и в его поддержке. Сейчас наоборот стараются максимально абстрагироваться от использования чистого sql и хранимок на бд, все-таки удобнее, работать с кодом в одном месте - и дебажить, и поддерживать в разы проще. И если работаете в ООП парадигме, то удобнее чтобы данные тоже были приближены к объектному виду. Поэтому если Вы не в жестком интерпрайзе и хайлоаде, то нет смысла уходить в прошлое. Знаю один крупный банк, который год назад искал нового разраба на существующий проект документооборота, где надо было все хранимки, более 5к, и sql в коде, перевести в EF. Наверное же не просто так они приняли такое решение.
    Ответ написан
  • Как мне с IDataReader привести к int?

    @kttotto
    все, что .NET
    Во первых, у Вас неверный запрос, должно бытьSelect Count(*) From ...
    Во вторых, агрегирующая функция (та, которая возвращает только одно значение, а не кортеж) читается другим методом, conn.ExecuteScalar(...);
    Результат должен вернуть тип object, который Вы и приводите к int.
    Ответ написан
  • Какой способ подключения к БД на C# правильный?

    @kttotto
    все, что .NET
    Все, что выполняет поставленную задачу - правильно. Все, что позволяет потом поддерживать и масштабировать код - еще правильней.

    В бизнес проектах через конструктор никто, конечно, код для бд не пишет. Чаще всего для мапинга с бд используют какую-нибудь ORM (EF, Dapper), руками пишут модели, которые потом будут мапиться на таблицы бд, прописывают их связи.
    Ответ написан
  • Что должно быть входным параметром метода C#?

    @kttotto
    все, что .NET
    Возможно надо убрать все, что не цифра ли все точки и получится "123"
    Ответ написан
  • Почему не могу найти работу Junior'ом C#?

    @kttotto
    все, что .NET
    Это не резюме, это набор слов, ничем Вас не выделяет из общей массы и даже делает низовым в списке общей массы.

    1. Такой кучи тегов даже у меня нет)) Если Вы знаете названия технологий, не говорит о том, что Вы знаете сами технологии. С Вашим опытом никто не поверит, что Вы имели реальный опыт со всем этим, а не просто hello world написали. Выберите те, в которых по Вашему мнению Вы лучше всего разбираетесь.

    2.
    Отличное знание WinForms, ASP.NET, LINQ и WPF. Паттерны: MVVM, MVP, Repository, IoC.

    Для третьекурсника звучит самонадеяно. При такой формулировке на техническом собеседовании будут проверять "отличное" знание и я почти уверен, что Вы его провалите. Лучше сказать что-то подобие: имел опыт работы с, для реализации использовал технологии, имею <начальные> навыки работы с и т.д.

    3.
    Занимался исправлением мелких багов, написанием небольших SQL-запросов и unit-тестов, решал небольшие задачи.

    Этим занимаются все разработчики, даже мидлы с сеньорами. Из Вашей фразы не понятно, какого уровня проект, какой стек, какие конкретно задачи Вы решали, как успешно Вы их решали. Работодателю нужно понимать Ваш реальный опыт и Ваши реальные возможности, а не нечто эфемерное "решал небольшие задачи".

    4.
    Если вспомнить css и html

    Вот такое никогда не пишите. Лучше соврать или преувеличить, или даже написать "Отличное знание", но не так как Вы здесь сформулировали.

    5. Не нужно оставлять ссылки на каждый проект в репозитории. Либо один, самый интересный на Ваш взгялд, либо одна ссылка на сам репозиторий. Работодатель пойдет туда только, если Вы заинтересуете его, не раньше. И ему пары файлов хватит оценить ваш уровень. Он не будет делать ревью всех Ваших проектов.

    6. Опыта одного проекта мало. Где опенсерс проекты, где участия в хакатонах, где амбиции стартапов, посещение конференций? Работодатель хочет понимать как Вы заинтересованы развиваться, какие у Вас планы для дальнейшего роста. Он берет вас нулевым не из альтруистических побуждений, а с надеждой, что Вы быстро вырастите и вернете ему прибылью затраченное на Вас время. Из Вашего резюме видно только одно: я студент - дайте работу. А почему Вам, за какие такие заслуги и что с этого будет иметь работодатель - не понятно.

    7. Я посмотрел Ваш код. Я бы не хотел, чтобы так писали у меня в проекте, начиная от именований и заканчивая некоторой логикой. Вас надо очень осторожно подпускать к реальным задачам и контролить, что Вы там напишете, просто чувствуется маленький опыт и до "отличных знаний" там далеко.

    В общем, вывод. Пока у Вас за плечами нет списка реальных проектов, чтобы Вас пригласили, надо себя выпячивать, хвастаться достижениями, демонстрировать амбиции, свою уникальность. Нужно убеждать работодателя, что Вы именно тот, кто ему нужен. В резюме этого нет. Когда у Вас будет пяток законченных проектов, будет наоборот, работодатель будет за Вами бегать и убеждать, что Вам у него будет лучше всего. И на hh студентов практикантов не ищут, поэтому только Вы должны делать отклики на вакансии, обязательно с сопроводительным письмом, в котором парой фраз Вы сможете заинтересовать работодателя.
    Ответ написан
  • C# как удвоить символ через отдельную функцию?

    @kttotto
    все, что .NET
    var source = "Test";
    
    // v.1 Заменит первое вхождение этой буквы в слове на удвоенную
    var ch = 's';
    var i = source.IndexOf(ch);
    var result = source.Substring(0, i) + ch + source.Substring(i);
    
    // v.2  Заменит все вхождения этой буквы в слове на удвоенную
    var ch = "s";
    var result = source.Replace(ch, ch + ch);
    Ответ написан