我正在使用此代码动态构建LINQ查询.它似乎工作,但当我在我的搜索中有多个searchString时,(所以当添加多个表达式时,我得到以下错误:
从范围引用的变量'p',但未定义**
我想我只能定义/使用一次.但是,如果是这样,我需要稍微改变我的代码.任何人都能指出我在正确的方向吗?
if (searchStrings != null)
{
foreach (string searchString in searchStrings)
{
Expression<Func<Product, bool>> containsExpression = p => p.Name.Contains(searchString);
filterExpressions.Add(containsExpression);
}
}
Func<Expression, Expression, BinaryExpression>[] operators = new Func<Expression, Expression, BinaryExpression>[] { Expression.AndAlso };
Expression<Func<Product, bool>> filters = this.CombinePredicates<Product>(filterExpressions, operators);
IQueryable<Product> query = cachedProductList.AsQueryable().Where(filters);
query.Take(itemLimit).ToList(); << **error when the query executes**
public Expression<Func<T, bool>> CombinePredicates<T>(IList<Expression<Func<T, bool>>> predicateExpressions, Func<Expression, Expression, BinaryExpression> logicalFunction)
{
Expression<Func<T, bool>> filter = null;
if (predicateExpressions.Count > 0)
{
Expression<Func<T, bool>> firstPredicate = predicateExpressions[0];
Expression …Run Code Online (Sandbox Code Playgroud) 在我的MS SQL Profiler中,我看到了很多这些小问题.
exec sp_execute 1,@ p0 = 15954
我知道这在理论上是有效的,这是执行先前创建的查询并传入特定参数.但问题是我不确定导致这些查询的原因.
有没有办法查看这些查询的TSQL内容?
我有这个例子,它创建了3个表达式并将它们添加到一个表达式数组中.现在我想知道如何在循环中对未知数量的表达式执行相同的操作.
Expression<Func<Product, bool>> filter1 = c => c.City.StartsWith("S");
Expression<Func<Product, bool>> filter2 = c => c.City.StartsWith("M");
Expression<Func<Product, bool>> filter3 = c => c.ContactTitle == "Owner";
Expression<Func<Product, bool>>[] filterExpressions = new Expression<Func<Product, bool>>[] { filter1, filter2, filter3 };
Run Code Online (Sandbox Code Playgroud) 我有这张桌子:
CREATE TABLE [dbo].[Fruit](
[RecId] [int] IDENTITY(1,1) NOT NULL,
[Banana] [int] NULL,
[TextValue] [varchar](50) NULL
)
Run Code Online (Sandbox Code Playgroud)
以下代码:
DECLARE @FruitInput INT = NULL
SELECT * FROM Fruit WHERE Banana = @FruitInput
Run Code Online (Sandbox Code Playgroud)
该记录在该表中:
1|NULL|Hello
Run Code Online (Sandbox Code Playgroud)
为什么我的查询不会返回此记录?
我创建了一个CompositeDataBoundControl,我可以很好地数据绑定.现在我想做同样的事情,但不是针对对象列表,而是针对单个对象.原因是我希望我的同事能够在他们的前端代码中简单地使用<%#Eval("X")%>.
问题是CompositeDataBoundControl有一个我必须覆盖的方法,它只接受一个集合作为数据源
CreateChildControls(System.Collections.IEnumerable dataSource, bool dataBinding)
Run Code Online (Sandbox Code Playgroud)
有没有办法为单个对象做同样的事情?
这是我今晚安排的测试.这是为了证明一些不同的东西,但结果并不像我预期的那样.
我在IQueryable上运行10000次随机查询的测试,在测试时我发现如果我在List上做同样的事情,我的测试速度提高了20倍.
见下文.我的CarBrandManager.GetList最初返回一个IQueryable,但现在我首先发出一个ToList(),然后它的速度更快.
谁能告诉我为什么我看到这个巨大的差异?
var sw = new Stopwatch();
sw.Start();
int queries = 10000;
//IQueryable<Model.CarBrand> carBrands = CarBrandManager.GetList(context);
List<Model.CarBrand> carBrands = CarBrandManager.GetList(context).ToList();
Random random = new Random();
int randomChar = 65;
for (int i = 0; i < queries; i++)
{
randomChar = random.Next(65, 90);
Model.CarBrand carBrand = carBrands.Where(x => x.Name.StartsWith(((char)randomChar).ToString())).FirstOrDefault();
}
sw.Stop();
lblStopWatch.Text = String.Format("Queries: {0} Elapsed ticks: {1}", queries, sw.ElapsedTicks);
Run Code Online (Sandbox Code Playgroud) 我正在向现有页面添加一个简单的 ASP.NET 页面(我现在无法更改/构建原始项目),该页面没有隐藏文件的代码。一切正常,除非我想使用我的项目中另一个库中的某个函数。
例子
<%@ Page Language="C#" %>
<%@ Import Namespace="MyProject.BusinessLogic" %>
<HTML>
<script runat="server" language="C#">
public void Page_Load(object sender, EventArgs e)
{
bool myBool = false;
MyLabel.Text = myBool.ToString(); //works fine
MyLabel.Text = MyProject.BusinessLogic.StatusManager.Get().ToString(); //does not work
}
</script>
<body>
<form id="MyForm" runat="server">
<asp:label id="MyLabel" runat="server"></asp:label>
</form>
</body>
</HTML>
Run Code Online (Sandbox Code Playgroud)
我得到的错误是 .. 在命名空间“MyProject.BusinessLogic”中不存在(您是否缺少程序集引用?)
知道如何解决这个参考问题吗?
我尝试了这些选项:http://msdn.microsoft.com/en-us/library/d864zc1k(v=vs.85).aspx,但没有运气。
在jQuery中有一个叫.家长("XX")很酷的功能,使我开始的地方与对象在DOM树和DOM向上搜索,寻找特定类型的父对象.
现在我在C#代码中寻找相同的东西.我有一个asp.net panel有时坐在另一个父母小组,或有时甚至2或3个父母小组,我需要通过这些父母向上旅行,最终找到UserControl我正在寻找的.
在C#/ asp.net中有一个简单的方法吗?
我看到之前已经讨论了几次,但那是2010年和之前的情况.现在我在我的Gmail客户端写了一封新邮件,并注意到我可以将图像粘贴到邮件正文/ webform中.
我很高兴看到这一点,因为我一直在寻找类似的解决方案.
谁能提供一些有关其工作原理的细节?是Flash吗?还是一些JavaScript?
有趣的挑战; 我的客户在SQL数据库中输入一些产品信息.该产品是一位着名的古老俄罗斯作曲家拉赫玛尼诺夫的画作.所以该名称在描述字段中.现在,只有少数搜索产品的客户知道如何拼写这个名字,但大部分时间都拼写错误.除了拼写错误之外,还有很多国际客户只是写出这个名字,如Rachmaninow,Rahmaninov,Рахманінаў.
如果我将这些拼写错误或翻译中的任何一个放入谷歌(几乎)总是知道如何纠正它并将我直接重定向到正确的页面.
有谁知道我的可能性是什么在我的产品搜索中获得一些神奇的东西?我可以使用一些API吗?一些我不知道的超级自由文本选项?要么 ...