powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Запрос с неопределенным количеством условий
41 сообщений из 41, показаны все 2 страниц
Запрос с неопределенным количеством условий
    #38838672
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. есть сущность следующего рода:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
public class MillingCutter
    {
        public int Id { get; set; }
        public string Name {get;set;}
        public int ProviderId { get; set; }
        public int OperationId { get; set; }
        public decimal? D { get; set; }
        public decimal? d1 { get; set; }
        public decimal? ap { get; set; }
        public decimal? L { get; set; }
        public decimal? Flute { get; set; }
        public decimal? Ha { get; set; }
        public string Shank { get; set; }
        public decimal? r { get; set; }
        public decimal? H { get; set; }
        public decimal? D2 { get; set; }
        public decimal? l2 { get; set; }
        public decimal? Ta { get; set; }
        public decimal? Rd { get; set; }
        public string Chamfer { get; set; }

        public virtual Provider Provider { get; set; }
        [ForeignKey("OperationId")]
        public virtual OperationType OperationType { get; set; }
    }

не соображу как сделать следующее: пользователю выводить окно для ввода данных(D,d1,ap и т.п.)(это то я как раз догадываюсь как сделать) а вот как фильтровать на основании полученных данных от пользователя не соображу. как сделать условие только на те поля которые пользователь указал, например D=20, L=104
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38838675
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
n => userD == null || n.D == userD
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38838676
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bald56rus,
безусловно практичней и правильней использовать linq to sql, а выражение формировать в ручную из полученных от пользователя данных.
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38838679
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, я наверно не правильно что то делаю: вот код контрола:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
namespace CatalogueInstrument.Controllers
{
    public class DefaultController : Controller
    {
        //
        // GET: /Default/
        private CatalogueInstrumentContext db = new CatalogueInstrumentContext();

        public ActionResult Index()
        {
            decimal? D = 20;
            decimal? d1 = 20;
            decimal? ap = 20;
            decimal? L = 
            var cutters = db.MillingCutters.Where(c=>c.D==null||c.D==D);
            return View(cutters);
        }

    }
}


данный запрос возвращает мне значения где D==null, что я делаю не так!? мне необходимо что бы при наличии D были значения где D=то что ввел пользователь
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38838685
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bald56rusя наверно не правильно что то делаюда, вы невнимательно смотрите на то, что я написал и не пытаетесь его понять
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38838686
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может я неправильно вопрос сформулировал. т.е. я ожидаю при отсутсвии значения у параметра что бы он вообще не фигурировал в запросе, введены все 4 параметра запрос выглядит как то так:
Код: c#
1.
2.
3.
4.
5.
decimal? D = 20;
decimal? d1 = 20;
decimal? ap = 20;
decimal? L = 104;
var cutters = from cutter in db.MillingCutters where cutter.D == D && cutter.d1 == d1 && cutter.ap == ap && cutter.L==L select cutter;


иначе например так
Код: c#
1.
2.
3.
4.
5.
decimal? D = 20;
decimal? d1 = 20;
decimal? ap = 20;
decimal? L = null;
var cutters = from cutter in db.MillingCutters where cutter.D == D && cutter.d1 == d1 && cutter.ap == ap;
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38838688
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Probald56rusя наверно не правильно что то делаюда, вы невнимательно смотрите на то, что я написал и не пытаетесь его понять
поправте меня: n => userD == null || n.D == userD я это понимаю как userD==null или userD=значение.правильно я понял?
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38838693
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть либо пользователь не дал значение: userD == null (и тогда вторая часть условия не проверяется), либо поле сущности равно значению, которое указал пользователь
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38838697
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bald56rus,
Уважаемы, остановитесь нести бред из детского сада.
Поднимитесь на уровень выше
Вам надо в гугде набрать - c# convert string to expression
что бы для каждого параметра создать выражение,( есть не плохие тулзы для этого (dynamicexpression))
а потом суммировать что получите в единое выражение
набрать : -C# append expressions
а в конце вставить что получилось в Where и всё..
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38838714
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно и так собрать
Код: c#
1.
2.
3.
IQueryable<MillingCutter> cutters = db.MillingCutters();
if (D != null) cutters = cutters.Where(n => n.D == D);
if ...

EF скомпонует все в единый where
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38838732
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro огромное спасибо за конкретный пример.
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38838735
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи, может для Вас это "детский лепет" а я не знал о таком способе(если бы знал то не спрашивал) и Вам спасибо за источник информации
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38838749
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bald56rus,
модератор, в туториал
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
using DynamicExpression = System.Linq.Dynamic.DynamicExpression;

namespace DynamicExpr
{
    public class Test
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }
       
    }
    class Program
    {
        static readonly List<Test> List = new List<Test> { new Test { Id = 1, Name = "aa", Price = 23 },
            new Test { Id = 2, Name = "bb", Price = 200 }, new Test { Id = 3, Name = "cc", Price = 200 } }; 
        static readonly Dictionary<string,object> WhereDictionary=new Dictionary<string, object>(); 
        private static object Func;

        static void Main(string[] args)
        {
           // WhereDictionary.Add("Id", 2);
           // WhereDictionary.Add("Name", "bb");
            WhereDictionary.Add("Price", 200);
            
            var acc = WhereDictionary.Aggregate<KeyValuePair<string, object>, Expression<Func<Test, bool>>>(null, 
                (current, o) => current.And(ExpressionCore<Test>(o.Key, o.Value)));
            Console.Write(List.Where(acc.Compile()).Count());
            Console.Read();

        }

        public static Expression<Func<T, bool>> ExpressionCore<T>(string namePropery, params object[] valuObjects)
        {
            return DynamicExpression.ParseLambda<T,bool>(namePropery+"= @0", valuObjects);
        }

       
    }

    public static class Helper
    {
         public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> a, Expression<Func<T, bool>> b)
        {
            if (b != null && a == null)
                return b;
            if (b == null&&a!=null)
               throw new Exception("asshole");
            var p = a.Parameters[0];
            var visitor = new SubstExpressionVisitor();
            visitor.Subst[b.Parameters[0]] = p;
            Expression body = Expression.AndAlso(a.Body, visitor.Visit(b.Body));
            return Expression.Lambda<Func<T, bool>>(body, p);
        }
    }

    internal class SubstExpressionVisitor : ExpressionVisitor
    {
        public Dictionary<Expression, Expression> Subst = new Dictionary<Expression, Expression>();
        protected override Expression VisitParameter(ParameterExpression node)
        {
            Expression newValue;
            return Subst.TryGetValue(node, out newValue) ? newValue : node;
        }
    }
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38839528
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дополнение,
конструкция выше для композиции Where
Очень часто as asp.net
требуется сортировка по списку полей as String
таки:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
       public static Expression<Func<T, bool>> ExpressionCoreOrderBy<T>(params object[] propertyName)
        {
            return DynamicExpression.ParseLambda<T, bool>("@0", propertyName);
        }

//сумматор

       public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> a, Expression<Func<T, bool>> b)
        {
            if (b != null && a == null)
                return b;

            var p = a.Parameters[0];
            var visitor = new SubstExpressionVisitor();
            visitor.Subst[b.Parameters[0]] = p;
            Expression body = Expression.OrElse(a.Body, visitor.Visit(b.Body));
            return Expression.Lambda<Func<T, bool>>(body, p);
        }
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38839541
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степитребуется сортировка по списку полей as String
таки:Таки Dynamic LINQ .
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38839543
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Код: c#
1.
n => userD == null || n.D == userD

Index Seek с этим не дружит.

Предпочитаю:
Код: c#
1.
2.
if (userID.HasValue)
    result = result.Where(v => v.UserID == userID);
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841274
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей КShocker.Pro
Код: c#
1.
n => userD == null || n.D == userD

Index Seek с этим не дружит.

Предпочитаю:
Код: c#
1.
2.
if (userID.HasValue)
    result = result.Where(v => v.UserID == userID);


сделал так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public ActionResult Index(MillingCutter Cutter)
        {
            decimal? D = Cutter.D;
            decimal? d1 = Cutter.d1;
            decimal? ap = Cutter.ap;
            decimal? L = Cutter.L;
            IQueryable<MillingCutter> cutters = db.MillingCutters;
            if (D != null) cutters = cutters.Where(c => c.D == D);
            if (d1 != null) cutters = cutters.Where(c => c.d1 == d1);
            if (ap != null) cutters = cutters.Where(c => c.ap == ap);
            if (L != null) cutters = cutters.Where(c => c.L == L);
            return View(cutters);
        }


все работает, не до конца понимаю в чем принципиальная разница между "userID.HasValue" и "D != null" на сколько я понял в обоих случаях сравнение с null идет. ну да ладно.спасибо всем откликнувшимся
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841305
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи, а зачем все эти танцы с бубном, если есть старый проверенный System.Linq.Dynamic?
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841309
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bald56rusне до конца понимаю в чем принципиальная разница между "userID.HasValue" и "D != null" на сколько я понял в обоих случаях сравнение с null идет.Принципиальной разницы нет.
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841311
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУГде-то в степи, а зачем все эти танцы с бубном, если есть старый проверенный System.Linq.Dynamic?Ну хочется. Может оно у него медленно работает, таки строки приходится парсить.
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841315
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По вот этому рецепту http://codearticles.ru/articles/2544

Что может быть проще?

Код: c#
1.
var l = list.Where("Price == @0", 200);
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841317
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу хочется. Может оно у него медленно работает, таки строки приходится парсить.
Так он делает тоже самое через DynamicExpression.ParseLambda :)
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841324
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КНу хочется. Может оно у него медленно работает, таки строки приходится парсить.
Так он делает тоже самое через DynamicExpression.ParseLambda :)Ну тогда не знаю. Бог ему судья.
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841326
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи такой Где-то в степи
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841377
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
ну не ужели не понятно, что ПЕРЕМЕННОЕ число параметров, там основной акцент не на динамик, а на ADD
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841384
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
например тебе прилетает словарь параметров
1 можно тупо составить из него строку с параметрами ( ну как в подготовительной группе учили) и скормить ее со значениями
порсеру.
2 а можно сделать как я показал.
тут ничего личного..
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841387
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,
а то что наворочено bald56rus , это у.г. ( никакого романтизма, в стителе С.А. - закидать труппами..)
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841405
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ,
например тебе прилетает словарь параметров
1 можно тупо составить из него строку с параметрами ( ну как в подготовительной группе учили) и скормить ее со значениями
порсеру.
2 а можно сделать как я показал.
тут ничего личного..Люди готовы на всё, лишь бы не торчал наружу IQueryable из репозитария. :-)
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841421
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЛюди готовы на всё, лишь бы не торчал наружу IQueryable из репозитария. :-)

Пока что ещё многие боятся IQueryable, непременно всеми силами скрывая, оборачивая и трансформируя во всякие IEnumerable/ICollection. Бедные люди ))
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841459
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это что бы ногу не отстрелили, и опять же иллюзия благополучия и достатка.
берите пример с прозекторов, те что бы освободить руку - размешать сахар в чае, кладут
бутерброд на грудь раслененки - и ничего..
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841461
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи, и чего? Рассказать, как конкатенацией собирать строку запроса? :)
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841470
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ,
например тебе прилетает словарь параметров
1 можно тупо составить из него строку с параметрами ( ну как в подготовительной группе учили) и скормить ее со значениями
порсеру.
2 а можно сделать как я показал.
тут ничего личного..
Так первый способ лучше ибо будет использоваться штатный длинк. Во втором же способе ты пишешь велосипед, который и так уже реализован. Причём такой велосипед будет так или иначе менее функционален по сравнению с длинком. В чем профит?
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841473
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
ой не смешите мои искандеры.
О прозекторах вспомнилось.
Мой хороший знакомый устроился в мог грузчиком.
.............
Приходит дядя с женой забирать тело своей матери - старушки.
- ( дядя) Мама готова?
- (прозектор) Да можете забирать, вот там в углу за колонной.
пара подходит, а там мой друг увлеченно , никого не замечая , пыхтя выдирает у ней золотой мост пассатижами.
Дяде плохо, у его жены истерика..
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841487
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты бы лучше прослойку со словарем написал, которая на выходе отдавала годную строку для длинк запроса. Это лучше, чем переписывать весь движок. Цены б не было такому рецепту :)
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841489
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть по факту это была бы дополнительная пятая перегрузка Where, принимающая на вход словарь. Вот это по феншую было бы.
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841497
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
а чет там ценного то, помнишь критерион ( разминочный проект), так вот внедрили в магазин похожее а поиск навесили через атрибуты типа, а типы формирует пользователь через подсобку, получилось заепись, закончат морду посмотришь..
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841507
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТо есть по факту это была бы дополнительная пятая перегрузка Where, принимающая на вход словарь. Вот это по феншую было бы.Совсем идеи кончились? Оформляй рецептами, только ссылку на первоисточник укажи. :-)

1. Обход дерева .
2. Парсер выражения, используемого для указании имени свойства, с поддержкой Property1.Property2.Property3 .
3. Быстрый доступ к свойству поздним связыванием. В той же папке всякие компараторы и т. п., использующие "это".
4. Добавление к запросам, сгенерированным EF, отладочной информации: Stack Trace и WCF Action.

Хватит пока. :-)
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841517
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока голова не этим забита - внук заболел, пойду дочь подменю в аптеку да по магазинам..
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841550
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bald56rus
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public ActionResult Index(MillingCutter Cutter)
        {
            decimal? D = Cutter.D;
            decimal? d1 = Cutter.d1;
            decimal? ap = Cutter.ap;
            decimal? L = Cutter.L;
            IQueryable<MillingCutter> cutters = db.MillingCutters;
            if (D != null) cutters = cutters.Where(c => c.D == D);
            if (d1 != null) cutters = cutters.Where(c => c.d1 == d1);
            if (ap != null) cutters = cutters.Where(c => c.ap == ap);
            if (L != null) cutters = cutters.Where(c => c.L == L);
            return View(cutters);
        }


Можно так сделать.
Код: c#
1.
2.
3.
4.
5.
6.
public static IQueryable<T> Where<T>(this IQueryable<T> src, Expression<Func<T, bool>> exp, Func<T> value)
        {
            if (value() == null)
                return src;
            return src.Where(exp);
        }
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841574
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУТо есть по факту это была бы дополнительная пятая перегрузка Where, принимающая на вход словарь. Вот это по феншую было бы.Совсем идеи кончились? Оформляй рецептами, только ссылку на первоисточник укажи. :-)

1. Обход дерева .
2. Парсер выражения, используемого для указании имени свойства, с поддержкой Property1.Property2.Property3 .
3. Быстрый доступ к свойству поздним связыванием. В той же папке всякие компараторы и т. п., использующие "это".
4. Добавление к запросам, сгенерированным EF, отладочной информации: Stack Trace и WCF Action.

Хватит пока. :-)
Так наоборот надо, из строки (словаря) в expression
...
Рейтинг: 0 / 0
Запрос с неопределенным количеством условий
    #38841962
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТак наоборот надо, из строки (словаря) в expression Ну как умею.
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Запрос с неопределенным количеством условий
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]