1

LINQ to SQL を使用して、配列内の値に基づいて対応するデータをクエリしようとしていますが、問題が発生しています。私はこれらのスレッドを読んでいましたが、それらが実際に私がやろうとしていることであるかどうか、そしてそれらがそれらを実装する方法であるかどうかはわかりません:

IEnumerable<T> の foreach に相当する LINQ

Linq スタイル "For Each"

文字列 'lines[]' の配列があります。各エントリに対して次のクエリを実行し、一貫した方法で出力できるように結果を保存するにはどうすればよいですか。繰り返しますが、ここに私の配列のサンプルがあります: 例: Z1234 Z2345 ZAF38383

//some non working code
List<string> results = new List<string>();

var thisQuery = from c in myContext.SpecificTable
where c.itemNumber == (foreach (string i in lines))
select c;

foreach (var result in thisQuery)
{
    results.Add(result);
}

リストの作成は問題なく、リストへの書き込みも問題ないと思いますが、配列内の各項目に対してクエリを実行する方法がわかりませんか?

私の配列の各エントリは Z で始まり、必要に応じて英数字の任意の配置が含まれます。例:Z3333

配列内の各エントリは、データベース 'SpecificTable' 内のテーブルのエントリに対応しています。この値に関連するすべてをそのテーブルに返したいので、そのデータの詳細を出力できます。

例: Z1234 を照会することから始めて、Z1234 が「SpecificTable」で見つかったときに、次のようなさまざまな詳細を出力できるようにしたいと考えています。

foreach (var res in thisQuery)
{
   //each result from the query (total of 3 from the example) will now show their Description in a messagebox.
   MessageBox.Show("Description:" + res.Description.ToString());
 }

ループを使用することで、初期配列に基づいてすべての結果のリストを作成し、「説明」などの対応するさまざまな値を出力できることを願っています。

それでも十分な情報が得られない場合は、より明確にするために提供できる情報をお知らせください。

4

2 に答える 2

1

あなたの質問を正しく理解しているかどうかわかりませんが、SpecificTable のエントリを "lines" 配列に結合し、結果をリストとして出力したいですか?

var results = myContext.SpecificTable.Select(c => lines.Contains(c.ItemNumber)).ToList();
foreach(var result in results)
{
    Console.WriteLine(string.format("{0}:{1}", "Description", result.Description));
}

特定のプロパティのみが必要な場合は、匿名オブジェクトのリストを返すことができます。

var results = myContext.SpecificTable.Where(c => lines.Contains(c.ItemNumber)).Select(c => new {c.ItemNumber, c.Description}).ToList();
foreach(var result in results)
{
    Console.WriteLine(string.format("{0}:{1}", "Description", result.Description));
}
于 2013-09-23T15:42:17.463 に答える