(from a in db.Assignments
join b in db.Deliveryboys on a.AssignTo equals b.EmployeeId
//from d in eGroup.DefaultIfEmpty()
join c in db.Deliveryboys on a.DeliverTo equals c.EmployeeId into eGroup2
from e in eGroup2.DefaultIfEmpty()
where (a.Collected == false)
select new
{
OrderId = a.OrderId,
DeliveryBoyID = a.AssignTo,
AssignedBoyName = b.Name,
Assigndate = a.Assigndate,
Collected = a.Collected,
CollectedDate = a.CollectedDate,
CollectionBagNo = a.CollectionBagNo,
DeliverTo = e == null ? "Null" : e.Name,
DeliverDate = a.DeliverDate,
DeliverBagNo = a.DeliverBagNo,
Delivered = a.Delivered
});
argv
и argc
- это то, как аргументы командной строки передаются в main ()
в C и C ++.
argc
будет количеством строк, на которые указывает argv
. Это будет (на практике) 1 плюс количество аргументов, так как практически все реализации будут добавлять имя программы к массиву.
Переменные называются argc
( количество аргументов ) и argv
( вектор аргументов ) по соглашению, но они могут быть заданы любой допустимый идентификатор: int main (int num_args, char ** arg_strings)
одинаково допустим.
Их также можно полностью опустить, получив int main ()
, если вы не собираетесь обрабатывать аргументы командной строки.
Попробуйте следующую программу:
#include <iostream>
int main(int argc, char** argv) {
std::cout << "Have " << argc << " arguments:" << std::endl;
for (int i = 0; i < argc; ++i) {
std::cout << argv[i] << std::endl;
}
}
Запуск с ./ test a1 b2 c3
выведет
Have 4 arguments:
./test
a1
b2
c3
argc
- количество аргументов передается в вашу программу из командной строки, а argv
- это массив аргументов.
Вы можете перебирать аргументы, зная их количество, например:
for(int i = 0; i < argc; i++)
{
// argv[i] is the argument at index i
}
Параметры main
представляют собой параметры командной строки, переданные программе при запуске. Параметр argc
представляет количество аргументов командной строки, а char *argv[]
- массив строк (указателей символов), представляющих отдельные аргументы, предоставленные в командной строке.
Первый параметр - это количество предоставленных аргументов, а второй параметр - это список строк, представляющих эти аргументы.
Оба из
int main(int argc, char *argv[]);
int main();
являются законными определениями точки входа для программы C или C ++. Страуструп: FAQ по стилю и технике C ++ подробно описывает некоторые варианты, которые возможны или разрешены для вашей основной функции.