实体框架选择行

时间:2013-12-16 18:03:43

标签: c# entity-framework

出于某种原因,我似乎无法弄清楚如何使用Entity Framework来选择单行。

这就是我所拥有的:

数据库:ItemSchema包含DefindexNameMarketPrice

我需要根据我已经拥有的Name选择Defindex

所以我希望将Defindex与记录匹配,并从该记录中检索名称。

2 个答案:

答案 0 :(得分:2)

您可以使用FirstOrDefaultSingleOrDefault(如果匹配您的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)