0

次のような「顧客」のクラスがあります。

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

私のクライアントでは、リストを取得してから、.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 に答える