使用DataContext获取单个项目

时间:2009-10-09 13:35:26

标签: sql asp.net-mvc datacontext

我正在做以下事情:

public MyItem FetchSingleItem(int id)
{
  string query = "SELECT Something FROM Somewhere WHERE MyField = {0}";
  IEnumerable<MyItem> collection = this.ExecuteQuery<MyItem>(query, id);
  List<MyItem> list = collection.ToList<MyItem>();
  return list.Last<MyItem>();
}

它真的不是很优雅,我希望使用DataContext获得单个项目更好一些。我在我的存储库中从DataContext延伸。在你问之前有一个正当的理由,但这不是这个问题的重点;)

那么,有什么更好的方法吗?

干杯

3 个答案:

答案 0 :(得分:0)

如果是SQL Server,请将SQL更改为:

SELECT TOP 1 Something FROM Somewhere ...

或者替代地,改变这些行

List<MyItem> list = collection.ToList<MyItem>();
return list.Last<MyItem>();

进入这一个:

return collection.First();

答案 1 :(得分:0)

myDataContext.MyItem.Where(item => item.MyField == id)
    .Select(item => item.Something)
    .FirstOrDefault();

答案 2 :(得分:0)

返回的记录未定义,因为您没有ORDER BY。所以很难做到精确的翻译。但是,一般情况下,颠倒顺序并采用First():

var q = from s in this.Somewhere
        where s.MyField == id
        orderby s.Something desc
        select s.Something;
return q.First();

关系表是无序的。因此,如果您没有精确指定所需的记录,则必须将返回的记录视为随机选择。