Asp.net mvc 3 从LINQ投影检查结果集的更好方法,而不是列表。计数?

Asp.net mvc 3 从LINQ投影检查结果集的更好方法,而不是列表。计数?,asp.net-mvc-3,entity-framework-4.1,Asp.net Mvc 3,Entity Framework 4.1,是否有更好的方法检查LINQ投影查询是否返回结果: IList<T> TList = db.Ts.Where(x => x.TId == 1).ToList(); // More canonical way for this? if (TitleList.Count > 0) { // Result returned non-zero list! string s = TList.Name; } IList TList=db.Ts.Where(x=>x.T

是否有更好的方法检查LINQ投影查询是否返回结果:

IList<T> TList = db.Ts.Where(x => x.TId == 1).ToList();  // More canonical way for this?
if (TitleList.Count > 0)
{
   // Result returned non-zero list!
   string s = TList.Name;
}
IList TList=db.Ts.Where(x=>x.TId==1.ToList();//更规范的方法?
如果(TitleList.Count>0)
{
//结果返回非零列表!
字符串s=TList.Name;
}
您可以使用
Any()
,或者更适合您的示例,
SingleOrDefault()
。请注意,如果您希望得到多个结果并计划使用所有结果,那么使用
Any()
而不是转换为列表并检查长度,实际上不会保存任何内容。如果您不打算使用所有结果,或者您正在构建一个可能会改变查询执行方式的更大查询,那么它可能是一个合理的选择

var item = db.Ts.SingleOrDefault( x => x.TId == 1 );
if (item != null)
{
    string s = item.Name;
    ...
}


也不需要使用.ToList(),您可以在IEnumerable上使用.Count()。。。但是,如果您不需要处理结果,.Any()会更好。谢谢您提供的大量信息。不是要劫持这个线程,但是我如何使用投影来选择id=1或id=2的位置?
db.Ts.where(x=>x.TId==1 | | x.TId==2)
如果您需要一些任意复杂的东西,请查看使用谓词Builder,@Jacquo另一种选择是
var-id=new int[]{1,2};var query=db.Ts.Where(x=>ids.Contains(x.TId))用于该特定示例。这将转换为
。。。其中,TId位于(1,2)
var query = db.Ts.Where( x => x.Prop == "foo" );
if (query.Any())
{
    var moreComplexQuery = query.Join( db.Xs, t => t.TId, x => x.TId );
    ...
}