linq to sqlですべて(*)を選択する方法


83

linq to sqlを実行するときに、どのようにすべての行を選択しますか?

Select * From TableA

クエリ構文とメソッド構文の両方でお願いします。

回答:


103
from row in TableA select row

あるいは単に:

TableA

メソッド構文では、他の演算子を使用します。

TableA.Where(row => row.IsInteresting) // no .Select(), returns the whole row.

基本的に、すでにすべての列を選択しているので、selectはそれを関心のある列に変換するので、次のようなこともできます。

from user in Users select user.LastName+", "+user.FirstName

私がやりたいもう1つの方法は、.Take(int)を使用して、指定された数のレコードのすべての列をプルすることです。TableA.Take(100)など
brian s

明示的に使用する必要がない理由を教えてくださいfrom row in TableA.RowsRowsデフォルトのプロパティだからですか?それはLINQの機能ですか、それとも他の場所で焼き付けられたものですか?ちょっと興味があるんだけど。
rory.ap 2015年

@roryapは、DBアクセスライブラリによって異なります。ここでは、LINQ to SQLを想定しています。ここで、テーブルは行、ADO、またはその他の異なるものです。
Simon Buchan 2015年

69

すべての行を選択しますか、それともすべての列を選択しますか?

いずれにせよ、実際には何もする必要はありません。

DataContextには、各テーブルのプロパティがあります。そのプロパティを使用して、テーブル全体にアクセスできます。

例えば:

foreach(var line in context.Orders) {
    //Do something
}

1
私はその質問を2番目にしています。これは、OPの質問に簡単かつ直接的に回答するため、選択した回答よりもはるかに役立つ回答です。
tandrewnichols 2012年

2
この答えはトップの答えに値します。これを修正しましょう:)
d.popov 2015年

OPを満たしているものの、この回答も「普遍的」ではないため、いつか反対票を投じられた可能性があります。私にとって、EFで使用する場合、allOrdersはDBSetであり、IEnumerableではないため、直後にallOrders.Where()を実行することはできません。おそらく私はそれを間違った方法で使用しているか、何かを見逃しているだけですが、.Skip(0)を追加することで魔法がかかってきました。
Charles Roberto Canato 2016

24
using (MyDataContext dc = new MyDataContext())
{
    var rows = from myRow in dc.MyTable
               select myRow;
}

または

using (MyDataContext dc = new MyDataContext())
{
    var rows = dc.MyTable.Select(row => row);
}

6
これらのどちらもしないでください。代わりに、単にvar rows = dc.MyTable
SLaks 2009年

2
彼はクエリ構文とメソッド構文を求めたので、私は彼にそれを与えています。
サイモンフォックス

3
彼が求めたものを彼に与えないでください。彼に必要なものを与えなさい。彼は明らかにLINQ-to-SQLをよく理解していません。
SLaks 2009年

いいえ、LINQ-to-SQLについてはまだよく理解していません。それについての本を読む時間がないのに、情報が必要なときだけ、周りを見回し始めます。さらに、Enityフレームワークが改善されるまで待っています。それはすべてのデータベースを使用できるので、私はむしろそれを学ぶので。
chobo2 2009年

2
十分に公平ですが、私が提供したソリューションのどちらにも問題はありません。これらは、より複雑なクエリを構築するという観点から始めるのに適した基盤を提供します。
サイモンフォックス

4

データベースからすべてのデータを選択したい場合は、これを試すことができます:-

dbclassDataContext dc= new dbclassDataContext()
List<tableName> ObjectName= dc.tableName.ToList();

それ以外の場合は、これを試すことができます:-

var Registration = from reg in dcdc.GetTable<registration>() select reg;

およびメソッドSyntex:-

 var Registration = dc.registration.Select(reg => reg); 

2
Dim q = From c In TableA
Select c.TableA

ObjectDumper.Write(q)

1

次のように単純なlinqクエリを使用して、SQLテーブルからすべてのレコードを選択できます。

var qry = ent.tableName.Select(x => x).ToList();


1

仮定するとTableA、テーブルのエンティティとしてTableA、及びTableADBEntitiesDBエンティティクラスとして、

  1. LINQメソッド
IQueryable<TableA> result;
using (var context = new TableADBEntities())
{
   result = context.TableA.Select(s => s);
}
  1. LINQ-to-SQLクエリ
IQueryable<TableA> result;
using (var context = new TableADBEntities())
{
   var qry = from s in context.TableA
               select s;
   result = qry.Select(s => s);
}

ネイティブSQLは次のようにも使用できます。

  1. ネイティブSQL
IList<TableA> resultList;
using (var context = new TableADBEntities())
{
   resultList = context.TableA.SqlQuery("Select * from dbo.TableA").ToList();
}

注:dboはSQLServerのデフォルトのスキーマ所有者です。SELECTコンテキスト内のデータベースに従ってSQLクエリを作成できます。



0

いくつかを除いて、「すべて」の列を取得する必要があることがよくあります。したがって、Select(x => x)は機能しません。

LINQPadのエディターは、*をすべての列に自動拡張できます。

ここに画像の説明を入力してください

'* all'を選択すると、LINQPadは*を展開し、不要な列を削除できます。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.