0

SQL Server データベースから行を取得しようとしています。入手方法がわかりません いろいろ試してみましたが、良い解決策が見つかりませんでした。

databasEntities db = new databasEntities();
var medlem = from medlemar in db.medlemar
             where medlemar.namn == "Ali"
             select medlemar;

ここに私のデータベーステーブルがありますMedlemar:

  • ID
  • 名無し
  • 失われた
  • 再掲
4

3 に答える 3

6

medlem はオブジェクトのコレクションになるため、 foreach または .first を使用できるはずです。

foreach(var m in medlem)
{
     var namn = m.namm;
     ...
}

また

 var m1 = medlem.First();
于 2012-10-07T15:09:40.007 に答える
3

C# ではvar、型のない型ではありません。これは実際には、型名全体を入力しなくてもオブジェクトを暗黙的に型指定する方法です。

例えば:

var someString = "Any String Value";

string someString = "Any String Value";

まったく同じ IL にコンパイルします。

したがって、あなたの場合、LINQ はIEnumerable<T>コレクションを返します。ここで、T はmedlemarオブジェクトの型です。

これはコレクションであるため、他のコレクションと同じようにアクセスする必要があります。1つの可能性はforeach

foreach(var m in medlem)
{
    //Do Something
}

もう 1 つの可能性はToList()、個々のメンバーを呼び出してからインデックスでアクセスすることです。

var medlemList =  medlem.ToList();
var namn = medlemList[i].namn;   // where i is some specific index in the collection

または、コレクション内の最初のオブジェクトを取得するだけの場合は、ユース ケースに応じていくつかの選択肢があります。

var firstMedlem = medlem.Single();
var firstMedlem = medlem.First();
var firstMedlem = medlem.SingleOrDefault();
var firstMedlem = medlem.FirstOrDefault();

上記のそれぞれはほぼ同じことを行いますが、コレクションにゼロまたは複数のオブジェクトがある場合は動作が異なります。

Single()コレクション内の唯一のオブジェクトを返します。コレクションに複数のオブジェクトが含まれている場合、または含まれていない場合は、例外がスローされます。同様に、SingleOrDefault()複数のオブジェクトがある場合は例外をスローしますが、返された値を返しdefault(T)ます (T が値型の場合を除き、通常は null)。

First()また、コレクションが空の場合に例外をスローし、デフォルト値を返す場合とFirstOrDefault()同じように動作します。コレクションに複数の値がある場合、常に最初のメンバーを返すという点でメソッドとは異なります。First()FirstOrDefault()Single..()

したがってFirstOrDefault()、コレクション自体が null でない限り、基本的に例外はスローされません。IEnumerable<T>他のバリエーションは、コレクションの内容に応じて、1 つ以上のケースで例外をスローします。

于 2012-10-07T15:27:08.160 に答える
2

次のようなものを使用する必要があると思いますFirstOrDefault()

   var medlem = from medlemar in db.medlemar
                           where medlemar.namn == "Ali"
                           select medlemar;
   string nameFromVar = medlem.FirstOrDefault();

以外にも使用できるオプションがありますFirstOrDefault()

  • Singleのような単一のアイテムを返しますが、アイテムFirstOrDefault()がないか複数のアイテムがある場合は例外をスローします。

  • Firstも単一のアイテムを返しますが、アイテムがない場合はスローします。

ただしFirstOrDefault()、最初のアイテムを返すか、アイテムがないか、より正確な場合は null を返します。

ソースが空の場合は default(TSource) 。それ以外の場合は、ソースの最初の要素。

于 2012-10-07T15:09:39.150 に答える