使用基于WCF的类</t>列出<t> .FindAll()委托问题

时间:2012-04-12 00:07:54

标签: wcf list serialization delegates

我有一类“客户”类似于:

[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”对象永远不会有值。

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

谢谢!

2 个答案:

答案 0 :(得分: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();
}

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

答案 1 :(得分:0)

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

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

有效吗?