Ответы пользователя по тегу .NET
  • Как решить данную задачу?

    lam0x86
    @lam0x86
    Не слушай их всех =)
    Наверняка, преподаватель хочет видеть решение с замкнутым связным списком. Что-то вроде такого:
    class Program
        {
            static void Main()
            {
                var personList = GenerateList(15); // personList указывает на первого человека в списке
    
                PrintList(personList);
    
                var p = personList;
                while (p != p.NextPerson) // пока человек не остался один в списке
                {
                    #region Этот кусок для корректного вывода списка на экран. Если вывод не нужен, можно убрать
                    if (personList == p.NextPerson)
                    {
                        personList = p.NextPerson.NextPerson;
                    }
                    #endregion
    
                    // <ВсяСоль>
                    p = p.NextPerson = p.NextPerson.NextPerson;
                    // </ВсяСоль>
    
                    // Если убрать верхний регион, то может возникнуть ситуация, когда personList указывает на 
                    // человека, который был удалён из списка. Возникнет бесконечный цикл.
                    PrintList(personList);
                }
            }
    
            // Вывод списка на консоль
            private static void PrintList(Person personList)
            {
                var p = personList;
                do
                {
                    System.Console.Out.Write(p.SequenceNumber);
                    System.Console.Out.Write(" ");
                    p = p.NextPerson;
                } while (p != personList);
                System.Console.Out.WriteLine();
            }
    
            // Генерация списка
            private static Person GenerateList(int n)
            {
                // Начинаем с последнего человека
                var currentPerson = new Person(n);
                var lastPerson = currentPerson;
    
                // затем создаём N-1 человек, указывая его порядковый номер и следующего за ним человека
                for (int i = n - 1; i > 0; i--)
                {
                    currentPerson = new Person(i) { NextPerson = currentPerson };
                }
    
                // последнего человека закольцовываем с первым
                lastPerson.NextPerson = currentPerson;
                return currentPerson;
            }
        }
    
        class Person
        {
            public Person(int sequenceNumber)
            {
                SequenceNumber = sequenceNumber;
            }
    
            public int SequenceNumber { get; private set; }
    
            public Person NextPerson { get; set; }
        }
    Ответ написан
    Комментировать
  • Как реализовывается IEnumerable?

    lam0x86
    @lam0x86
    Прошу прощения, но IEnumerable не наследуется от IEnumerator. Ваш код с приведением типа списка к IEnumerator не должен компилироваться. Интерфейсы IEnumerator и IEnumerable тесно интегрированы с компилятором, из-за чего иногда возникает путаница: и тот, и другой интерфейс можно использовать в yield-statements, но по факту в foreach-statements можно использовать только IEnumerable (а на самом деле, всё еще сложнее - в foreach можно использовать вообще любой тип, у которого есть метод GetEnumerator(), но это совсем другая история).
    Ответ написан
  • ASP.net серверная задержка. Чат на long polling?

    lam0x86
    @lam0x86
    Советую почитать про библиотеку SignalR.
    Ответ написан
    Комментировать
  • Оптимизация ресурсоёмкой функции (linq)?

    lam0x86
    @lam0x86
    Может, так?

    public class ExchangerProvider
    {
        public static IEnumerable<Robofollower.Exchanger> LikesList(int userId)
        {
            using (var context = new DataClassesDataContext())
            {
                return context.Exchanger
                    .Where(e => e.UserId != userId)
                    .Where(e => e.LikeActive)
                    .Where(e => e.Points >= 1)
                    .Where
                    (e => 
                        context.LikeExchanger_Data
                            .Where(l => l.UserId == userId)
                            .All(l => l.MediaId != e.MediaId)
                    )
                    .OrderByDescending(e => e.Points)
                    .Take(5)
                    .ToList();
            }
        }
    }
    
    Ответ написан
  • Почему url не маршрутизируется?

    lam0x86
    @lam0x86
    Может, класс контроллера называется SPHome, вместо SPHomeController?
    Ответ написан
  • Локальная ООБД для .Net

    lam0x86
    @lam0x86
    db4o?
    Ответ написан
    Комментировать