from c in Query
select new {User Name = c.UserName};
Run Code Online (Sandbox Code Playgroud)
在LINQ中,我想给出这样的命名参数,但它不接受User Name相反的接受UserName.
如果有更好的方法来做到这一点,请告诉我,但这是我设想的方式.可以吗?
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)
有什么方法可以做到这一点?
我是.NET和LINQ to SQL的新手.
到目前为止,我一直在提取数据并填充gridview,一切正常.
但是,当我构建我的第二页时,我创建了一个新的DataContext(我假设每页使用一个)当我引用我在上一页中使用的表时,它给了我一个"不明确的引用"错误,因为我有我的表两个DataContexts.从第二个表中删除表后,我可以引用第一个表.
那么,我应该只为我的整个应用程序设置一个上下文,还是为每个表设置一个 也许介于两者之间我把大多数人在同一个环境中一起使用的表放在哪里?
什么是最佳做法?
我们正在更改一些遗留代码以使用LINQ to SQL.
在一个单独的测试一次性课程中,我尝试制作我的数据库上下文,我可以做
mydbcontext.mytable.Count()
Run Code Online (Sandbox Code Playgroud)
很好,这一切都是全知的.
但是,当尝试在类(在同一程序集中)中实现它时,Queryable方法(如Count,Where等)不再有效.
任何想法为什么会这样?
我有以下LINQ to SQL 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数据库.
有人知道如何完成这项任务吗?谢谢
我有下面的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) 如何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 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) 我不得不承认,我只是计划难过......我有以下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) 我有以下型号:

我需要一个特定用户的所有灯具和预测列表(如果该灯具有预测).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)