このコードは、.cshtml ページ内に表示する一意の組織名のリストを取得します。
IEnumerable<dynamic> data = db.Query("Select * from provider
where submitter_element = '210300'");
//the 210300 could be any value passed to the query
var items = data.Select(i => new { i.org_name }).Distinct();
foreach(var name in items){
<text>@name.org_name<br></text>
のレコードdata
はそれぞれ一意ですが、各フィールドのデータには同じ値が含まれています。つまり、複数のプロバイダーが同じ org_name を持っています。
data
複数の一意のリストを作成するために、複数回再利用できるようにしたいと考えています。これを @helper に渡して表示したいと思っていました。そのために、私は次のことをしています。
@helper ListBoxDistinctDisplay(IEnumerable<dynamic> queryResult)
{
IEnumerable<dynamic> distinctItems = queryResult.Select(i => new { i.org_name }).Distinct();
foreach(var listItem in distinctItems){
<text>@listItem.org_name<br></text>
}
次に、.cshtml ページで次のようにします。
@DisplayHelpers.ListBoxDistinctDisplay(data)
...そしてビンゴ、「ビュー」ページに独自のリストが表示されます。
ご覧のとおり、ヘルパー内で .org_name を指定する必要があることを除いて、これは完全に機能します。
私の質問は、フィールド名に関係なくヘルパーを再利用できるように、フィールド名 (org_name) をヘルパーに渡すにはどうすればよいですか?
または...私が気付いていない、まったく異なるアプローチがありますか?
ありがとう!