出于某种原因,我似乎无法弄清楚如何使用Entity Framework来选择单行。
这就是我所拥有的:
数据库:ItemSchema
包含Defindex
,Name
,MarketPrice
我需要根据我已经拥有的Name
选择Defindex
。
所以我希望将Defindex
与记录匹配,并从该记录中检索名称。
答案 0 :(得分:2)
您可以使用FirstOrDefault
或SingleOrDefault
(如果匹配您的Defindex值的行数不应超过一行)从表中获取单行:
var row = context.TableName.FirstOrDefault(r => r.Defindex == value);
if (row != null)
// use row.Name;
如果您使用SQL Server的默认EF提供程序,那么这将生成SQL查询
SELECT TOP (1)
[Extent1].[Defindex] AS [Defindex],
[Extent1].[Name] AS [Name],
[Extent1].[MarketPrice] AS [MarketPrice]
FROM [dbo].[TableName] AS [Extent1]
WHERE [DefIndex].[Id] > @value
也可以这样写同样的查询
var row = context.TableName.Where(r => r.Defindex == value)
.FirstOrDefault();
SingleOrDefault
将尝试选择前2个结果,如果返回的行数多,则会抛出异常。
答案 1 :(得分:0)
var defIndex=3; //your value
var item=yourDbContext.ItemSchemas.FirstOrDefault(s=>s.DefIndex==defIndex);
if(item!=null)
{
//Record exists.Let's read the Name property value
string theName=item.Name;
// do something with theName now
}
假设您的DBContext对象有一个名为ItemSchemas
的集合(ItemSchema)