使用linq2sql查询选择单个项目

时间:2009-04-21 02:19:27

标签: 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];

我希望这不是获得实体的最佳方式。 :-P

任何人都有更好的解决方案吗?

提前致谢!

- J

2 个答案:

答案 0 :(得分:4)

试试这个:

int stateID = getTheStateIDToLookup();    
State state = dc.States.SingleOrDefault(s => s.StateID == stateID);

答案 1 :(得分:3)

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

另请注意,这要求只有一个符合您条件的州,这在您的情况下可能是正确的。或者您可以使用:

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

如果你知道有一个符合你标准的州,你可以像这样摆脱OrDefault:

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