小编Joh*_*arr的帖子

在动态创建where子句时,LINQ"'不在范围内"

所以,我收到了标题中的错误.我将直接进入相关代码.首先,手动创建where语句(确实有效),然后动态创建不起作用.两者都创建相同的queryExpression.

首先,使用两种方法生成的queryExpression:

{Table(Products).Select
  (s => new SalesData() {
    ProductID = s.ProductID,
    StoreName = s.StoreName, 
    Count = s.Count
}).Where(s => (s.Count > 500))}
Run Code Online (Sandbox Code Playgroud)

现在,工作的手动方法:

IQueryable<SalesData> data = ( from s in sales.Products
                               select new SalesData
                               {
                                   ProductID = s.ProductID,
                                   StoreName = s.StoreName,
                                   Count = s.Count
                               } ).AsQueryable<SalesData>();

data = data.Where(s => s.Count > 500);

this.dataGridView1.DataSource = null;

this.dataGridView1.DataSource = (from d in data
                                 select new
                                 {
                                     d.ProductID,
                                     d.StoreName,
                                     d.Count
                                 } );
Run Code Online (Sandbox Code Playgroud)

这按预期工作; 我的DataGridView填充了数据.

现在,动态创建where子句:

IQueryable<SalesData> data = ( from s in …
Run Code Online (Sandbox Code Playgroud)

c# lambda expression-trees linq-to-sql

3
推荐指数
1
解决办法
912
查看次数

string.IsNullOrEmpty + Entity Framework 5

我已经使用了Entity Framework已经有一段时间了,我正在重新使用EF 5,但不会这个查询:

SELECT 
    c.OrganizationName as CompanyName,
    c.OrganizationKey as CompanyId,
    ISNULL(a.Line1, '') as Line1,
    ISNULL(a.Line2, '') as Line2,
    a._CityStateZip as CityStateZip
FROM Organizations c
JOIN Addresses a ON c.AddressKey = a.AddressKey
WHERE c.OrganizationName LIKE @term + '%'
AND c.IsSuspended = 0
AND c.IsActive = 1
Run Code Online (Sandbox Code Playgroud)

与以下相同:

var results = (from c in adms.Organizations
               where c.OrganizationName.StartsWith(term)
               where !c.IsSuspended
               where c.IsActive
               select new
               {
                 CompanyName = c.OrganizationName,
                 CompanyId = c.OrganizationKey,
                 Line1 = (string.IsNullOrEmpty(c.Address.Line1) ? string.Empty : c.Address.Line1),
                 Line2 = (string.IsNullOrEmpty(c.Address.Line2) ? string.Empty …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework linq-to-sql

3
推荐指数
1
解决办法
8417
查看次数

如何获取asp.net MVC中上次保存(最近未保存)行的ID?

我正在使用Entity Framework学习ASP.Net MVC.我想得到最后保存记录的ID.我已经检查了这个,当你想获得最近保存的记录的id时,接受的答案正常.我需要两天前可能保存的记录.

我该如何检索?

c# asp.net asp.net-mvc entity-framework asp.net-mvc-4

3
推荐指数
1
解决办法
1306
查看次数

null == null返回false?

任何人都可以提供任何想法,为什么我的空检查评估错误?

还应该指出,如果我不为空,则评估是正确的.我不确定还有什么相关内容,但让我知道我需要提供的其他细节.

foreach (var item in selectedItems)
{
    var i = inspectionItems.Keys.SingleOrDefault(x => x.InspectionItemId == item.InspectionItemId);
    if (i != null)
    {
        // Process i
     }
     else
     {
       // create
     }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此输入图像描述

c# .net-4.0 visual-studio-2013

2
推荐指数
1
解决办法
91
查看次数

TSQL中的日期比较

为什么以下每个都返回记录:

SELECT Name, CreatedDate 
FROM EmployeeTable 
WHERE CreatedDate < '20151214'

SELECT Name, CreatedDate 
FROM EmployeeTable 
WHERE CreatedDate > '20151214'
Run Code Online (Sandbox Code Playgroud)

虽然以下查询没有?

SELECT Name, CreatedDate 
FROM EmployeeTable 
WHERE CreatedDate = '20151214'
Run Code Online (Sandbox Code Playgroud)

我必须使用CAST带有相等运算符的a来获得我想要的结果:

SELECT Name, CreatedDate 
FROM EmployeeTable 
WHERE CAST(CreatedDate as DATE) = '2015-12-14'
Run Code Online (Sandbox Code Playgroud)

有没有办法使用相等运算符而不必使用强制转换?

CreatedDate是类型DATETIME,包括时间.

sql sql-server sqldatetime sql-server-2012

1
推荐指数
1
解决办法
484
查看次数

仅在数据存在时添加条件

我想WHERE只在变量有数据的情况下为子句添加一个条件.

我尝试使用以下case语句,但它有语法错误.

Declare @last_name varchar(10) = null;
Select * from TABLE1 
Where FirstName = 'John'
AND CASE WHEN @last_name IS NOT NULL THEN LastName = @last_name
Run Code Online (Sandbox Code Playgroud)

sql sql-server

0
推荐指数
1
解决办法
662
查看次数