C# 使用linq2sql查询选择单个项

C# 使用linq2sql查询选择单个项,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我试图从Linq2Sql查询中检索单个实体,但在找到“漂亮”的方法时遇到了困难。以下是我发现的有效方法: var states = from state in dc.States where state.Id == j.StateId select state; State s = states.ToList<State>().ToList()[0]; var states=来自dc.states中的状态,其中state.Id==j.StateId选择状态; State s=st

我试图从Linq2Sql查询中检索单个实体,但在找到“漂亮”的方法时遇到了困难。以下是我发现的有效方法:

 var states = from state in dc.States where state.Id == j.StateId select state;
State s = states.ToList<State>().ToList()[0];
var states=来自dc.states中的状态,其中state.Id==j.StateId选择状态;
State s=states.ToList().ToList()[0];
我希望这不是获得实体的最佳方式-P

谁有更好的解决方案

提前谢谢

--试试这个:

int stateID = getTheStateIDToLookup();    
State state = dc.States.SingleOrDefault(s => s.StateID == stateID);
还要记住,这要求只有一个状态符合您的条件,这在您的情况下可能是正确的。或者您可以使用:

var s = dc.States
    .FirstOrDefault(st => st.Id == j.StateId);
或者,如果您知道存在一个符合您的条件的状态,您也可以像这样摆脱OrDefault:

var s = dc.States
    .Single(st => st.Id == j.StateId);
var s = dc.States
    .Single(st => st.Id == j.StateId);