0

我有一类“客户”,例如:

[DataContract]
public class Customer 
{
    [DataMember]
    public CustomerID {get; set;}
    [DataMember]
    public Name {get; set;}
}

在我的客户中,我得到一个 List,然后我想在其上使用其中一种 .Find() 方法:

List<WCFService.Customer> customers = WCFService.CustomerClient.GetCustomers();
WCFService.Customer customer = customers.Find 
    (delegate (WCFService.Customer thisCustomer)
    {
         return thisCustomer.Name == "fred";
    });

然而,在单步执行代码时,“thisCustomer”对象永远不会有值。

我假设这与创建类时的序列化有关,但我想知道是否有一些简单的方法可以解决这个问题,或者可能有更好的方法。

谢谢!

4

2 回答 2

1

我不确定您 GetCustomers 会返回什么,但事情看起来很奇怪。我希望您有一个 WCF 代理实例,您可以调用它来获取客户。

var proxy = new WCFService.CustomerClient();

var customers = proxy.GetCustomers();

var singleFred = customers.FirstOrDefault(z => z.Name.ToLowerInvariant() == "fred");

var allFreds = customers.Where(z => z.Name.ToLowerInvariant() == "fred");

该服务将具有这些方面的方法

public interface IMyService
{
   IEnumerable<Customer> GetCustomers();
}

向您的客户端添加服务引用时,您可以通过转到添加引用对话框的高级设置并选择不同的集合类型来选择使用不同的集合类型然后是数组。我会选择 Generic.List。

于 2012-04-12T02:02:21.217 回答
0

你能试试这个稍微简单的代码吗?

customers.Find(cust => cust.Name == "fred");

它有效吗?

于 2012-04-12T00:15:18.463 回答