2013-02-28 89 views
0

我有一个客户ID的列表输出到一个日志文件foreach语句:设置所有值,以一个变量在C#

foreach(var customer in _response.CustomersList) 
{ 
     log.WriteLine(customer.CustID); 
} 

编号的输出正常,但我的问题是,我不能够把它们放到一个变量中使用它们。

例如,我想给出这个请求:_request2.CustID = customer.CustID但这是不正确的。

我需要这些ID的,因为我有一个取消客户的要求:

  public void Cancel() 
      { 
       _request2 = new CancelCust(); 
       _request2.CommandUser = _request.CommandUser;  
       _request2.CustID = "This is where I would put the variable that holds the customer ID's"   
       _request2.Company = _request.Company;  
      } 

那么,我该如何分配这些ID的一个变量是在我的请求后使用?

+0

你的意思是你需要跟踪所有的id(而不是特定的)。你能不能创建一个整数列表并将每个ID添加到它。这对于LINQ来说更容易,但你不会得到日志记录。 – JRoughan 2013-02-28 19:11:35

+0

@JRoughan,是的,而不是说'custid [0] = _response.Customers [0] .CustID;'我会立即输入所有的Id,以便我可以一次性取消它们。 – CSharpDev4Evr 2013-02-28 19:12:41

+0

什么类型的属性是Request.CustID?如果它不是集合,则需要为每个客户发送不同的请求。 – JRoughan 2013-02-28 19:13:19

回答

3

我不完全清楚你想用上面的代码来完成什么。但是你可以使用一点LINQ并获得ID的列表,然后绕过该列表,只要你喜欢:

var customerIDs = _response.CustomersList.Select(customer => customer.CustID); 
+0

就是这样!谢谢! – CSharpDev4Evr 2013-02-28 19:23:34

0

听起来像你的变量_request2.CustID是错误的类型。你从编译器得到什么错误信息? (或者,它是你得到的运行时错误?)

1

您可以通过将他们得到的所有客户ID,当您去:

var customerIds = new List<int>(); 
foreach (var customer in _response.CustomersList) 
{ 
    customerIds.Add(customer.CustId); 
    log.WriteLine(customer.CustID); 
} 

,或者使用LINQ

var customerIds = _response.CustomersList.Select(c => c.CustId); 

正如我在我的评论中指出,如果属性Request.CustId不是集合这不会帮助你要求所有的人都在一次。你能改变Request的定义吗?

0

这样的事情?

public void Cancel() 
{ 
    foreach(var customer in _response.CustomersList) 
    { 
     _request2 = new CancelCust(); 
     _request2.CommandUser = _request.CommandUser;  
     _request2.CustID = customer.CustID;   
     _request2.Company = _request.Company;  
    } 
}