文字列(サービス名)を返すSQLクエリを実行します。これはクエリです:
IQueryable<string> query = from Comp in ServiceGroupdb.ServiceGroupes
where (Comp.GroupID == groupID)
select Comp.Name;
クエリから文字列を取得するにはどうすればよいですか?
文字列(サービス名)を返すSQLクエリを実行します。これはクエリです:
IQueryable<string> query = from Comp in ServiceGroupdb.ServiceGroupes
where (Comp.GroupID == groupID)
select Comp.Name;
クエリから文字列を取得するにはどうすればよいですか?
LINQは常にシーケンスを返すため、その中からアイテムを取得する必要があります。結果が1つしかないことがわかっている場合は、を使用Single()
してそのアイテムを取得します。
var item = (from Comp in ServiceGroupdb.ServiceGroupes
where (Comp.GroupID == groupID)
select Comp.Name).Single();
シーケンスから単一のアイテムを取得するには、次の4つのLINQメソッドがあります。
Single()
アイテムを返し、シーケンスに0個または複数のアイテムがある場合は例外をスローします。SingleOrDefault()
アイテム、またはデフォルト値(null
のstring
)を返します。シーケンス内に複数のアイテムがある場合にスローします。First()
最初のアイテムを返します。シーケンスに0個のアイテムがある場合にスローします。FirstOrDefault()
最初のアイテムを返します。アイテムがない場合はデフォルト値を返します)クエリの最初の要素を取得するには、を使用できますquery.First()
が、要素がない場合は、例外がスローされます。代わりにquery.FirstOrDefault()
、最初の文字列またはデフォルト値(null
)のいずれかを提供するを使用できます。したがって、クエリの場合、これは機能します。
var myString = (from Comp in ServiceGroupdb.ServiceGroupes
where Comp.GroupID == groupID
select Comp.Name)
.FirstOrDefault();
もうすぐです。
ただやる
IQueryable<string> query = from Comp in ServiceGroupdb.ServiceGroupes where (Comp.GroupID == groupID) select Comp.Name;
// Loop over all the returned strings
foreach(var s in query)
{
Console.WriteLine(s);
}
またはquery.FirstOrDefault()
、1つの結果しか得られないため、前述のように使用します。
私は方法がよりきれいでより明確であると思うので、ここにそれは行きます:
string query = ServiceGroupdb.ServiceGroupes
.Where(Comp => Comp.GroupID == groupID)
.Select(Comp => Comp.Name)
.FirstOrDefault();
このようにしてください。
var query = from Comp in ServiceGroupdb.ServiceGroupes where (Comp.GroupID == groupID) select Comp.Name;
クエリには結果が含まれます。