我正在做以下事情:
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
延伸。在你问之前有一个正当的理由,但这不是这个问题的重点;)
那么,有什么更好的方法吗?
干杯
答案 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();
关系表是无序的。因此,如果您没有精确指定所需的记录,则必须将返回的记录视为随机选择。