CancelCust
一度に1つずつ取ることができるため、リストでは問題が直接発生しないようRequest
です。あなたが投稿した最初のコードフラグメントがどこにあるのか実際には理解できないので、名前を付けますNowhereMethod
!
私もあなたのコードを修正し、のようなものを修正しました_request.Company=_request.Company;
。あなたが投稿したコードに従って、使用法からすべてのクラス階層をさらに推測しました。
おっしゃるとおり、削除は さんによって行われますがCancelRequest
、前述したように一度に 1 件しか削除できずRequest
、さんRequest
は 1 人の顧客に関する情報のみを保存していると推測されます。したがって、あなたの問題はResponse
メソッドを書き直すだけで簡単に解決できると思います。
問題は、Linqを使用する正しい方法であることが示されている他の回答のように、それらをリストにしようとしているとまだ考えることができます。それでも、あるクラスに配置する正しい場所を決定し、リストを取得する正しい方法でメソッドを設計する必要がある場合があります。
だから、それはコードです、私は推測して修正しようとしました。おそらくプロパティの代わりにフィールドを使用し、必要なものだけを配置することに注意してください。
コード内のコメントを確認することをお勧めします。
partial class Listener /* I named it, to put your code */ {
SearchRequest _request;
CancelRequest _request2;
SearchResponse _response;
CancelResponse _response2;
public void ArrangeRequest() {
_request=new CustomerSearchRequest();
_request.Company="Test Inc. ";
}
void NowhereMethod() {
var customerIds=_response.Customers.Select(c => c.CustID).ToList();
foreach(var custID in customerIds) {
_request2=new CancelRequest();
_request2.CustID=custID;
_request2.Company=_request.Company;
}
}
public void ResponseOriginal() {
var ws=new RunEngine();
_response=ws.SearchCust(new AppHeader(), _request) as SearchResponse;
_response2=ws.CancelCust(new AppHeader(), _request2) as CancelResponse;
}
public void Response() /* tried to correct */ {
var ws=new RunEngine();
_response=ws.SearchCust(new AppHeader(), _request) as SearchResponse;
var customerIds=_response.Customers.Select(c => c.CustID).ToList();
foreach(var custID in customerIds) {
_request2=new CancelRequest();
_request2.CustID=custID;
_request2.Company=_request.Company;
// Seems it should be like this
// but note the assignment might be wrong, it's according to what `CancelCust` returns
// for the correct way to make it a list of Customer is appeared in other answers
_response2=ws.CancelCust(new AppHeader(), _request2) as CancelResponse;
}
}
}
partial class Customer {
public String CustID;
}
partial class Response {
public List<Customer> Customers;
}
partial class Request {
public String Company;
public String CustID;
}
partial class SearchResponse: Response {
}
partial class CancelResponse: Response {
}
partial class SearchRequest: Request {
}
partial class CancelRequest: Request {
}
partial class CustomerSearchRequest: SearchRequest {
}
partial class AppHeader {
}
partial class RunEngine {
public Response SearchCust(AppHeader appHelper, Request request) {
// I don't know what it's like
throw new NotImplementedException();
}
public Response CancelCust(AppHeader appHelper, Request request) {
// I don't know what it's like
throw new NotImplementedException();
}
}
Request
andCustomer
は次のように宣言できます。
partial class Customer {
// Company was not appearing used in the code
public String CustID;
}
partial class Request {
public String Company;
public String CustID;
}
また
partial class Customer {
public String Company;
public String CustID;
}
partial class Request: Customer {
}
コードを壊しません。