私は購入者の名前で検索するすべての請求書を検索しようとしています。それを行う最もクリーンな方法を探しています。 私は買い手のリストを持っています。C#LINQ。オブジェクト名のプロパティまたは名前の部分でオブジェクトを検索する
List <Buyer> AllBuyers;
と買い手がある:
public class Buyer
{
public string BuyerIdentifier{ get; set; }
public string Name { get; set; }
}
私はバイヤーに請求書のリストを持っています。
List <Invoice> AllInvoices;
はと請求書は、私が現在やっている何を
public class Invoice
{
public string InvoiceID { get; set; }
public string BuyerID { get; set; }
public string Amount{ get; set; }
}
です:
List<string> BuyerIDs = new List<string> { };
foreach (Invoice inv in AllInvoices)
{
if (!(BuyerIDs.Contains(inv.BuyerID)))
{
// add BuyerID to list if it's not already there. Getting id's that are present on invoices and whose Buyer names match using contains or equals
BuyerIDs.Add(AllBuyers.First(b => b.BuyerIdentifier == inv.BuyerID
&& (b.Name.IndexOf(SearchValue, StringComparison.OrdinalIgnoreCase) >= 0)).BuyerIdentifier);
}
}
Invoices = AllInvoices.FindAll(i=> BuyerIDs.Contains(i.BuyerID));
LINQクエリ構文は私が参加するLINQのメソッドよりも理解するのが少し楽です。だから、下の回答の後、私は今、これをやっている:
ここInvoices = (from buyer in AllBuyers
join invoice in AllInvoices on buyer.BuyerIdentifier equals invoice.BuyerID
where buyer.Name.IndexOf(SearchValue, StringComparison.OrdinalIgnoreCase) >= 0
select invoice).ToList();
はあなたのコードの仕事をしていますか?もしあなたがコードを改善しようとしているのであれば、この質問はおそらく[Code Review Stack Exchange](https://codereview.stackexchange.com/)にあります。それ以外の場合は、どのような問題がありますか、どのようなエラーが表示されますか? –
それは動作します、私はちょうどforeachループとif条件なしでそれをするLINQでより良い方法があるのだろうかと思います。 – Razkar
私は何をしているのかわかりませんが、おそらく参加しているだけでしょう –