我,向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是“黄色”的记录?
发布于 2014-10-15 11:24:51
使用linq & C#
private readonly myEntities db = new myEntities()
public list<SomeTable> MyRecords()
{
return res = db.SomeTables.where(o => o.SOMEATTR == "YELLOW").ToList()
}发布于 2014-10-15 10:53:41
一旦你有了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()发布于 2014-10-15 11:21:22
如果您有一个映射到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 YELLOWhttps://stackoverflow.com/questions/26380680
复制相似问题