我创建了控制台应用程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Objects;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
NorthwindEntities nwe = new NorthwindEntities();
var customerOrdersDetail = nwe.CustOrdersDetail(10248);
foreach (var ordersDetail in customerOrdersDetail)
{
Console.WriteLine(ordersDetail.ProductName);
Console.WriteLine(ordersDetail.UnitPrice);
Console.WriteLine(ordersDetail.Quantity);
Console.WriteLine(ordersDetail.ExtendedPrice);
Console.WriteLine(ordersDetail.Discount);
Console.ReadLine();
}
}
}
}
它显示了我在nwe.CustOrdersDetail();
中输入ID的产品的所有详细信息,但我感兴趣的是,我可以在应用程序启动时直接输入ID吗?当我想展示关于其他产品的信息时,不要全部启动应用程序会更有用。
答案 0 :(得分:3)
您需要隔离功能以获取订单明细项并将其放入可重复调用的内容中,因为这只是一个控制台应用程序,类似这样的内容应该可以证明:
private static void Main(string[] args)
{
FetchOrderDetail();
}
private static void FetchOrderDetail()
{
string input = string.Empty;
while (input != "exit")
{
Console.WriteLine("Enter order detail ID: ");
input = Console.ReadLine();
int orderId = 0;
if (Int32.TryParse(input, out orderId))
{
var customerOrdersDetail = nwe.CustOrdersDetail(orderId);
foreach (var ordersDetail in customerOrdersDetail)
{
Console.WriteLine(ordersDetail.ProductName);
Console.WriteLine(ordersDetail.UnitPrice);
Console.WriteLine(ordersDetail.Quantity);
Console.WriteLine(ordersDetail.ExtendedPrice);
Console.WriteLine(ordersDetail.Discount);
Console.ReadLine();
}
}
}
}
答案 1 :(得分:1)
解析args数组并将其传递,如下所示:
var customerOrdersDetail = nwe.CustOrdersDetail(int.Parse(args[0]));
这样你可以在命令行中使用它,如下所示:
ConsoleApplication3 10248
ConsoleApplication3 10249
ConsoleApplication3 10250
答案 2 :(得分:0)
你可以写一个循环,直到遇到(或没有)只接受带有Console.ReadLine()的ID或者你可以使用你的字符串[] args在开始时传入一个ID(虽然这看起来像在第一次
中更改" ID会更加困难
public class Program
{
public static void Main(string[] args)
{
while (true)
{
Console.WriteLine("Enter an ID, q to quit");
string line = Console.ReadLine();
if (line == "q")
break;
int myId = int.Parse(line); // note this will throw if you enter a non int (and not q)
OutputInformation(myId);
}
Console.WriteLine("Done");
}
public static void OutputInformation(int Id)
{
NorthwindEntities nwe = new NorthwindEntities();
var customerOrdersDetail = nwe.CustOrdersDetail(myId);
foreach (var ordersDetail in customerOrdersDetail)
{
Console.WriteLine(ordersDetail.ProductName);
Console.WriteLine(ordersDetail.UnitPrice);
Console.WriteLine(ordersDetail.Quantity);
Console.WriteLine(ordersDetail.ExtendedPrice);
Console.WriteLine(ordersDetail.Discount);
Console.ReadLine();
}
}
}
答案 3 :(得分:0)
为什么不直接输入要运行的ID列表并从args数组中访问它们:
foreach (var input in args)
{
Console.WriteLine(int.Parse(input));
}
这样称呼:ConsoleApplication3 10248 10249 10250