标签: linq-to-sql

LINQ使用空格命名参数

from c in Query
select new {User Name = c.UserName};
Run Code Online (Sandbox Code Playgroud)

在LINQ中,我想给出这样的命名参数,但它不接受User Name相反的接受UserName.

linq linq-to-sql

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

我可以使用查询结果创建新对象吗?

如果有更好的方法来做到这一点,请告诉我,但这是我设想的方式.可以吗?

Customer是database/datacontext中的表.我想要的是查询该表并使用它构建一个新对象.

如果我要插入记录,我会做这样的事情:

Customer cust = new Customer(){ FirstName = "A", LastName = "B", Age = 31 }
db.Customers.InsertOnSubmit(cust);
db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

我想要做的是用查询结果实例化该对象.像这样的东西:

var query =
     from a in db.Customers
     where a.FirstName == "A"
     select a;

Customer cust = new Customer(){ query };
Run Code Online (Sandbox Code Playgroud)

或者甚至是

Customer cust = new Customer(){
     from a in db.Customers
     where a.FistName == "A"
     select a;
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以做到这一点?

c# linq-to-sql

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

我应该只使用一个DataContext吗?

我是.NET和LINQ to SQL的新手.

到目前为止,我一直在提取数据并填充gridview,一切正常.

但是,当我构建我的第二页时,我创建了一个新的DataContext(我假设每页使用一个)当我引用我在上一页中使用的表时,它给了我一个"不明确的引用"错误,因为我有我的表两个DataContexts.从第二个表中删除表后,我可以引用第一个表.

那么,我应该只为我的整个应用程序设置一个上下文,还是为每个表设置一个 也许介于两者之间我把大多数人在同一个环境中一起使用的表放在哪里?

什么是最佳做法?

asp.net linq-to-sql

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

LINQ表不包含count(或任何其他Queryable扩展方法)的定义

我们正在更改一些遗留代码以使用LINQ to SQL.

在一个单独的测试一次性课程中,我尝试制作我的数据库上下文,我可以做

mydbcontext.mytable.Count()
Run Code Online (Sandbox Code Playgroud)

很好,这一切都是全知的.

但是,当尝试在类(在同一程序集中)中实现它时,Queryable方法(如Count,Where等)不再有效.

任何想法为什么会这样?

c# linq-to-sql

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

使用C#在LINQ中使用外键导航属性查询表

我有以下LINQ to SQL EF类:

LINQtoSQL EF类图

SessionId上的外键关系(主表WebinarSession).

我想通过使用lambdas来选择涉及特定产品系列的所有WebinarSession行.

我把为例此代码,当然不工作(它将与OWRK 的inseatd 在哪里,但因为我多张实例相匹配的条件是不适用):

SessionId = _webinarRecordingsDB.WebinarSessions.Where(m => m.SessionId == m.SessionSubjects.Where(n => n.ProductLineName == productLine).SessionId);
Run Code Online (Sandbox Code Playgroud)

_webinarRecordingsDB是EF对象映射的SQL数据库.

有人知道如何完成这项任务吗?谢谢

c# lambda foreign-key-relationship linq-to-sql

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

使用.Contains的Linq To SQL方法失败

我有下面的Linq To SQL方法.当我单步执行代码spcCodeIDs包含我期待的七个条目时.但是我得到了一个运行时例外

Method 'Boolean Contains(System.String)' has no supported translation to SQL.

我错过了什么?

public static DataTable GetSPCCodeList()
{         

    using (var context = ProviderDataContext.Create())
    {
        IQueryable<tblProviderAdminSPCCode> tSPCCode = context.GetTable<tblProviderAdminSPCCode>();
        IList<string> spcCodeIDs = BLLCmo.FCApprovedSPCsForGreenSheet();
        return (tSPCCode
                .Where(spcCode => spcCode.Inactive == null && spcCodeIDs.Contains(spcCode.SPCCodeID)) 
                .OrderBy(spcCode => spcCode.SPCCodeID)
                .Select(spcCode => new { spcCode.SPCCodeID, spcCode.SPCDescription, spcCode.SPCCategoryID }))
                .CopyLinqToDataTable();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# linq-to-sql

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

简单的Linq分组

如何group by在Linq中使用.

SqlServer示例

select 
    ActionGroupName,  
    sum(cast(isnull(solicit_count,0) as int)) as 'SolicitCount' 
from 
    [solicits]
group by
    ActionGroupName
Run Code Online (Sandbox Code Playgroud)

我的linq版本

var groupbyfilter = from v in lstSale
                    group v by v.ActionGroupName into g
                    select g.ActionGroupName, sum(g.solicit_count)
Run Code Online (Sandbox Code Playgroud)

我没有以适当的方式得到它.

linq linq-to-sql

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

LINQ to SQL在结果中省略了字段,同时仍将其包含在where子句中

基本上我正在尝试在LINQ to SQL中执行此操作;

SELECT DISTINCT a,b,c FROM table WHERE z=35
Run Code Online (Sandbox Code Playgroud)

我试过这个,(c#代码)

(from record in db.table
select new table {
    a = record.a,
    b = record.b,
    c = record.c
}).Where(record => record.z.Equals(35)).Distinct();
Run Code Online (Sandbox Code Playgroud)

但是当我以这种方式从表对象中删除列z时,我得到以下异常;

绑定错误:在投影中找不到成员'table.z'.

我不能返回字段z,因为它会使我的明显无用.任何帮助表示赞赏,谢谢.

编辑:

这是一个更全面的例子,包括使用PredicateBuilder,

var clause = PredicateBuilder.False<User>();
clause = clause.Or(user => user.z.Equals(35));
foreach (int i in IntegerList) {
    int tmp = i;
    clause = clause.Or(user => user.a.Equals(tmp));
}

var results = (from u in db.Users
               select new User {
                   a = user.a,
                   b = user.b,
                   c = …
Run Code Online (Sandbox Code Playgroud)

c# sql linq linq-to-sql

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

LINQ在生成的SQL中为我的int添加了神秘的"+1"

我不得不承认,我只是计划难过......我有以下LINQ to SQL方法 - >

    public static int GetLastInvoiceNumber(int empNumber)
    {
        using (var context = CmoDataContext.Create())
        {
            context.Log = Console.Out;

            IQueryable<tblGreenSheet> tGreenSheet = context.GetTable<tblGreenSheet>();
            return (tGreenSheet
                            .Where(gs => gs.InvoiceNumber.Substring(3, 4) == empNumber.ToString())
                            .Max(gs => Convert.ToInt32(gs.InvoiceNumber.Substring(7, gs.InvoiceNumber.Length)))
                            );
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是基于同事编写的SQL查询来实现的,它实现了几乎相同的东西 - >

SELECT DISTINCT 
SUBSTRING([InvoiceNumber], 1, 6) AS EmpNumber,
MAX(CAST(SUBSTRING([InvoiceNumber], 7, LEN([InvoiceNumber])) AS INT)) AS MaxInc
FROM [CMO].[dbo].[tblGreenSheet]
WHERE SUBSTRING([InvoiceNumber], 3, 4) = '1119' --EmployeeNumber
GROUP BY SUBSTRING([InvoiceNumber], 1, 6)
Run Code Online (Sandbox Code Playgroud)

但是,当我检查时生成的SQL context.Log = Console.Out是 - >

SELECT …
Run Code Online (Sandbox Code Playgroud)

.net c# sql linq linq-to-sql

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

Linq to entities - 一对多关系 - 需要左外连接而不是交叉连接

我有以下型号:

model.mdmx

我需要一个特定用户的所有灯具和预测列表(如果该灯具有预测).sql返回我需要的内容如下:

SELECT * FROM Fixture f
LEFT OUTER JOIN Prediction p ON f.FixtureId = p.FixtureId
WHERE p.UserID = '06E4D3E0-8365-45BF-9054-3F8534C7AD5E' OR p.UserID IS NULL
Run Code Online (Sandbox Code Playgroud)

我试过了:

var query = from f in c.Fixtures
    from p in c.Predictions.Where(pre => pre.UserId == new Guid("06E4D3E0-8365-45BF-9054-3F8534C7AD5E") || pre.UserId == null)
    select new
    {
        FixtureId = f.FixtureId,
        HomeScore = f.HomeTeamScore,
        AwayScore = f.AwayTeamScore,
        PredictionId = p.PredictionId,
        HomePrediction = p.HomeTeamPrediction,
        AwayPrediction = p.AwayTeamPrediction
        };
Run Code Online (Sandbox Code Playgroud)

但这会产生(并给出错误的结果):

SELECT 
[Extent1].[FixtureId] AS [FixtureId], 
[Extent1].[HomeTeamScore] AS [HomeTeamScore], 
[Extent1].[AwayTeamScore] AS [AwayTeamScore], 
[Extent2].[PredictionId] AS …
Run Code Online (Sandbox Code Playgroud)

c# sql linq linq-to-sql entity-framework-4.1

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