Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

LINQ - заявка

Featured Replies

Здравейте! Не съм сигурна,че мястото на въпросът ми е тук,но не видях по - подходящо място : -) Ето условието: " Write a method that finds all the sales by specified region and period (start / end dates). " Ето и линк където е визуализирана базата (Northwind) ; http://merc.tv/img/fig/Northwind_diagram.jpg Не мога да намеря ТАБЛИЦАТА "Sales" или не виждам как да ги достъпя след като не мога да ги открия : )) Благодаря ВИ предварително!

Здравейте!

Не съм сигурна,че мястото на въпросът ми е тук,но не видях по - подходящо място : -)

Ето условието:

"

Write a method that finds all the sales by specified region and period (start / end dates).

"

Ето и линк където е визуализирана базата (Northwind) ; http://merc.tv/img/f...ind_diagram.jpg

Не мога да намеря ТАБЛИЦАТА "Sales" или не виждам как да ги достъпя след като не мога да ги открия : ))

Благодаря ВИ предварително!

Таблицата Orders съдържа именно това, което търсите

А за групирането по региони става още на ниво SQL

select ..... from orders group by region....

Периодът е : ShippedDate(start) и RequiredDate(end) или не съм на прав път?

Периодът и региона се явяват условие за заявката. Най-подходящото поле за търсене по период на продажбата е дата на поръчката.

Периодът и региона се явяват условие за заявката. Най-подходящото поле за търсене по период на продажбата е дата на поръчката.

От бизнес гледна точка ShippedDate е датата, която е по-интересна

Периодът е : ShippedDate(start) и RequiredDate(end) или не съм на прав път?

Не, трябва да е нещо от рода:

....ShippedDate >date_start and ShippedDate<date_end

  • Автор

А не трябва ли да бъде по този начин :

public static void FindeSelesByRegionDate(NorthwindEntities northwindEntities,string region,DateTime startDate,DateTime endDate)
		    {
			    var seles=
				    from o in northwindEntities.Orders
				    where  region.Equals(o.ShipRegion) &&
						   o.OrderDate >= startDate    &&
						   o.OrderDate <= endDate
				    select o.ShipName;
			    int i = 1;
			    foreach (var s in seles)
			 {
				   
			 Console.WriteLine("{0} ShipName is {1}",i,s);
				   i += 1;
			 }
		    }

А не трябва ли да бъде по този начин :

public static void FindeSelesByRegionDate(NorthwindEntities northwindEntities,string region,DateTime startDate,DateTime endDate)
			{
				var seles=
					from o in northwindEntities.Orders
					where  region.Equals(o.ShipRegion) &&
						   o.OrderDate >= startDate	&&
						   o.OrderDate <= endDate
					select o.ShipName;
				int i = 1;
				foreach (var s in seles)
			 {
				  
			 Console.WriteLine("{0} ShipName is {1}",i,s);
				   i += 1;
			 }
			}
Нещо такова е, да. Защо просто не го пробваш?
  • Автор

Пробвах го,просто го! Постнах го,за да видя дали съм изпълнила условието : - ) Благодаря ВИ много : - ))

Съвет от мен! Никога не използвай var без да е необходимо. В случая е не е необходимо! Всички LINQ куерита връщат IEnumerable<tipa_kojto_wryshtash>, в примера, който демонстрираш респективно трябва да е IEnumrable<string>. По този начин и слепият да погледне програмата ше разбере какво си искала да кажеш. Не жертвай четимост за бързина на кодиране - това е груба грешка! Така на следващият ред итератора в цикъла няма да бъде от тип var, а от конкретния тип string. Виждаш ли колко елегантно. Освен това, този нова-мода синтаксис не означава нищо - по-добре ползвай класическия C# запис на LINQ куерито! На твое място аз бих разписал проблема така :

public static void FindeSelesByRegionDate(NorthwindEntities northwindEntities,string region, DateTime startDate, DateTime endDate)
{
        IEnumerable<Order> orders = northwindEntities.Orders.Where(o => (
            (o.ShipRegion == region) &&
            (
                (o.OrderDate >= startDate) &&
                (o.OrderDate <= endDate)
            ))).OrderBy(o => o.OrderDate);

        foreach (Order order in orders)
        {
            Console.WriteLine("{0} ShipName is {1}", o.OrderDate, o.ShipName);
        }
}

Отново и слепият вижда, какво си искала да направиш. В добавка, не измъкваш само името на поръчката (така е по условие) и подреждаш по дата, сега вече можеш да предоставиш по-смислена информация (датата на поръчката вместо безмисления номер) на конзолата. Премахнах оператора .Equals() - защото ако дадеш null като стойност на аргумента регион, ще ти гръмне един дебел НулПоинтер ексепшън.

  • Автор

ДА,наистина е много по-елегантно и ЯСНО! Благодаря ВИ за вниманието и помощта,която ми оказвате! :wors:

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.