给出以下LINQ to SQL查询:
var test = from i in Imports
where i.IsActive
select i;
Run Code Online (Sandbox Code Playgroud)
解释的SQL语句是:
SELECT [t0].[id] AS [Id] .... FROM [Imports] AS [t0] WHERE [t0].[isActive] = 1
Run Code Online (Sandbox Code Playgroud)
假设我想在select中执行一些无法转换为SQL的操作.我的理解是,实现这一目标的传统方法是AsEnumerable()将其转换为可行的对象.
鉴于此更新的代码:
var test = from i in Imports.AsEnumerable()
where i.IsActive
select new
{
// Make some method call
};
Run Code Online (Sandbox Code Playgroud)
并更新了SQL:
SELECT [t0].[id] AS [Id] ... FROM [Imports] AS [t0]
Run Code Online (Sandbox Code Playgroud)
注意执行的SQL语句中缺少where子句.
这是否意味着整个"Imports"表被缓存到内存中?如果表中包含大量记录,这会导致性能下降吗?
帮助我了解幕后实际发生的事情.
我正在尝试在c#2.0(linqbridge)中使用linq来搜索我的数据库中的患者名称,但是我收到以下错误:System.Data.Datatable不包含AsEnumerable()System.Data的定义.Datatable不包含CopyToDataTable()的定义
我将linqBridge.dll引用添加到我的项目中.我正在使用:
使用System.Linq;
List<string> names = name.Split(' ').ToList();
SqlConnection con = new SqlConnection(m_connection_string);
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM PATIENT", con);
DataSet ds = new DataSet();
da.Fill(ds);
var query =
from pat in ds.Tables["PATIENT"].AsEnumerable().Where(c => names.All(val => c.PAT_SEARCH_NAME.Contains(val)))
select pat;
DataTable table = query.CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我已经读过这个版本的LinqBridge(1.1)不包含这个方法..有没有办法解决这个问题?
谢谢.
我试图在.net 2 winforms应用程序上运行以下代码:
DataTable dt = this.GetData(null, null, true, sql);
DateTime minDate = (from f in dt.AsEnumerable()
select f.Field<DateTime>("Timestamp")).Min();
Run Code Online (Sandbox Code Playgroud)
我收到"using system.linq"和".AsEnumerable()"的错误.有什么方法可以解决这个问题,使用AsEnumerable()?或者我应该放弃这种方法?
谢谢!
Dim x = From row In f_table.AsEnumerable()
Select row("Crop")
Run Code Online (Sandbox Code Playgroud)
据我了解,“f_table.AsEnumerable”应该使我的搜索对象(在本例中为“row”)成为数据行对象。这个简单的示例运行时没有任何异常,但没有找到任何条目(如果我切换到从 f_table 获取的数据行数组,而不是 f_table.AsEnumerable,则此搜索有效)。
为什么 AsEnumerable 不允许搜索表的行的任何想法?
编辑/添加:以下是我所拥有的,其中“emptyrows”是 f_table 中行的子集数组。
Dim emptyrows_grouped = From row In emptyrows
Order By row("Date"), row("Time")
Group By New With {.date = row("Date")}.date,
New With {.crop = row("Crop")}.crop
Into Group
Run Code Online (Sandbox Code Playgroud)
我想要的是这种形式:
Dim emptyrows_grouped = From row In f_table.AsEnumerable
Where row.Field(Of String)("SamplePosition") Like "Emp%"
Order By row("Date"), row("Time")
Group By New With {.date = row("Date")}.date,
New With {.crop = row("Crop")}.crop
Into Group
Run Code Online (Sandbox Code Playgroud)