我',接近EF6。我已经理解,如果我想要一条记录,我可以使用First()
方法(也可以像#" get",我认为)。
但是,如果我想从我的桌子收集记录怎么办?我的意思是,如果查询的结果可以有从0到N的基数......我该怎么办?
愚蠢的例子:
名称表:SomeTable
ID NAME SOMEATTR
1 A YELLOW
2 B RED
3 C YELLOW
4 D YELLOW
5 E BLUE
...
我怎样才能获得someAttr所在的所有记录"黄色"?
答案 0 :(得分:1)
获得Linq查询后......
var query = (from ... in ... where ... select ...);
或者,对于您的具体示例:
var query = (from r in dbContext.MyTable where (r.someAttr == "YELLOW") select r);
您可以使用foreach
迭代它,这将导致它执行一次然后产生结果...
foreach (var r in query)
{
}
...或致电ToList()
(http://msdn.microsoft.com/en-us/library/vstudio/bb342261(v=vs.100).aspx),如果您想获取一个可以在以后传递,操纵或检查多次的列表。 (该列表在返回后基本上与服务器断开连接。)
var list = query.ToList()
...或者用它来构建像HashSet<T>
(http://msdn.microsoft.com/en-us/library/bb301504(v=vs.110).aspx)
var set = new HashSet<T>(query)
其中任何一个都会导致它只在服务器上执行一次,并处理结果。
毕竟,查询本身是IEnumerable
。它也是IQueryable
所以你可以进一步操纵它,然后枚举结果,比如......
var sortedList = query.OrderBy(...).ToList()
答案 1 :(得分:1)
使用linq&amp; C#
private readonly myEntities db = new myEntities()
public list<SomeTable> MyRecords()
{
return res = db.SomeTables.where(o => o.SOMEATTR == "YELLOW").ToList()
}
答案 2 :(得分:0)
如果您有SOMEATTR
类映射到SOMEATTR
表,则可以查询它:
var context = new YourDbContext();
var results = context.SomeTables.Where(x=>x.SOMEATTR == "Yellow").ToList();
//then you can iterate all results
foreach(var item in results)
{
Console.WriteLine(item.ID + " " + item.NAME + " " + item.SOMEATTR);
}
结果将是:
1 A YELLOW
3 C YELLOW
4 D YELLOW