我一直在从事一个使用第三方 DAL (SubSonic) 为所有数据库对象生成类的项目。
对于查询这些对象,现有的代码实践通常是:
int keyValue = 1;
TableObject t = TableObject.SingleOrDefault(x => (x.keyField == keyValue));
if (t != null) {
int valueWeWant = t.fieldWeWant;
string otherValueWeWant = t.otherFieldWeWant;
}
我一直在尝试尽可能地减少 SQL 流量,因为我们往往有大行并且通常只关心一两个字段。到目前为止,我能找到的最佳方法是:
int keyValue = 1;
var t = TableObject.All().Where(x => (x.keyField == keyValue)).Select(x => new { x.fieldWeWant, x.otherFieldWeWant}).Take(1);
if ((t != null) && (t.Count() != 0)) {
int valueWeWant = t.First().fieldWeWant;
string otherValueWeWant = t.First().otherFieldWeWant;
}
我喜欢生成的 SQL 只选择单行和 2 个字段,并且对匿名类型的可读性感到满意,但必须比较 .Count() 对我来说似乎很浪费。
我是否错过了一种更简单的方法来执行此操作?