我刚刚开始使用Linq to SQL,我想知道是否有人可以分享任何管理dbml文件的最佳实践.
任何其他提示和技巧欢迎.
我正在尝试与制药公司一起填写下拉列表,如Bayer,Medley等.而且,我从DB获得这些名称,这些名称在DB中重复,但具有不同的ID.
我正在尝试使用Linq Distinct(),但我不想使用相等比较器.还有另外一种方法吗?
我的下拉列表必须填写公司的ID和名称.
我正在尝试这样的事情:
var x = _partnerService
.SelectPartners()
.Select(c => new {codPartner = c.codPartner, name = c.name})
.Distinct();
Run Code Online (Sandbox Code Playgroud)
这显示了ddl中的重复公司.
谢谢!
在线:bool travel = fill.travel.Value;我收到以下错误:
可以为空的对象必须具有值
而且我不确定为什么.我想要做的就是获取当前错误的旅行数据库中的值.任何帮助,将不胜感激.
using (var db = new DataClasses1DataContext())
{
var fill = (from f in db.expenseHdrs
where f.rptNo == getPkRowReport()
select f).FirstOrDefault();
txtReportDesc.Text = fill.description;
txtPeriod.Text = fill.period;
txtPurpose.Text = fill.purpose;
bool travel = fill.travel.Value;
chkTravel.Checked = travel
}
Run Code Online (Sandbox Code Playgroud) 我有一个项目,有许多不同的类在一组通用的表中查询和修改数据.我已经设置了一个.dbml文件,它为我们提供了一个DataContext类.我的问题是,是否应该由所有对象使用DataContext的单个实例,或者是否可以安全使用多个实例.我也想知道单个DataContext的线程安全性,以及是否应同步访问它的方法.
我一直在寻找谷歌,但没有找到任何可以帮助我的技巧.
如你所知SQL有一个"where x in(1,2,3)"子句,它允许你检查多个值.我正在使用linq,但我似乎无法找到与上述语句相同的语法.
我有一个类别ID(列表)的集合,我想检查
我找到了一些使用.contains方法的东西,但它甚至没有构建.
如何在Linq中执行LIKE查询?
我有以下查询我想执行.
var results = from c in db.costumers
where c.FullName LIKE "%"+FirstName+"%,"+LastName
select c;
Run Code Online (Sandbox Code Playgroud) var result = table1.Join(table2, o => o.ProgramID, t => t.ProgramID, (o, t) => new { o.ProgramID, t.Program })
.OrderBy(t => t.Program)
.Distinct();
Run Code Online (Sandbox Code Playgroud)
上面的linq语句实际上返回了正确的结果,但是他生成的sql(下面)并不是那么简单
SELECT [t2].[ProgramID], [t2].[Program]
FROM (
SELECT DISTINCT [t0].[ProgramID], [t1].[Program]
FROM [table1] AS [t0]
INNER JOIN [table2] AS [t1] ON [t0].[ProgramID] = [t1].[ProgramID]
) AS [t2]
ORDER BY [t2].[Program]
Run Code Online (Sandbox Code Playgroud)
我本以为下面的sql更清晰,但我不确定实现它的linq语句.
select distinct
o.ProgramID,
t.Program
from
table1 0
inner join table2 t on t.ProgramID = o.ProgramID
order by t.Program
Run Code Online (Sandbox Code Playgroud)
提前致谢
我有2个清单.1是产品的集合.另一个是商店里的产品系列.
如果名称与产品中的任何名称匹配,我需要能够返回所有shopProducts.
我有这个,但似乎没有用.有任何想法吗?
var products = shopProducts.Where(p => p.Name.Any(listOfProducts.
Select(l => l.Name).ToList())).ToList();
Run Code Online (Sandbox Code Playgroud)
我需要说给我所有其他名单中存在名称的商店产品.
我想在我的表中插入一个名为'S'的列,它将根据从表列获取的值获得一些字符串值.
例如:for each ID (a.z)我想将它的字符串值存储在另一个表中.字符串值从另一个通过Linq查询获取它的方法返回.
这是我需要获得的信息的结构:
az是表#1中第一个方块中的ID,从这个ID我得到表#2中的另一个id,从中我可以得到我需要在列'S'下显示的字符串值.
var q = (from a in v.A join b in v.B
on a.i equals b.j
where a.k == "aaa" && a.h == 0
select new {T = a.i, S = someMethod(a.z).ToString()})
return q;
Run Code Online (Sandbox Code Playgroud)
S = someMethod(a.z).ToString()导致以下错误的行:
无法将类型为"System.Data.Linq.SqlClient.SqlColumn"的对象强制转换为"System.Data.Linq.SqlClient.SqlMethodCall".
是否可以在Linq to SQL中执行公用表表达式(CTE)(如下所示).我对CTE和Linq to SQL都很陌生.
我目前正在免费存储过程(但不能以任何方式对付它们)所以我不想仅仅针对一个查询进行存储过程的跳跃,除非它是完全必要的.
这是我在SQL中做的一个例子,我想知道我是否可以在Linq to SQL中做:
WITH TaskHierarchy (TaskID, [Subject], ParentID, HierarchyLevel, HierarchyPath) AS
(
-- Base case
SELECT
TaskID,
[Subject],
ParentID,
1 as HierarchyLevel,
CONVERT(VARCHAR(MAX),'/') AS HierarchyPath
FROM Task
WHERE TaskID = 2
UNION ALL
-- Recursive step
SELECT
t.TaskID,
t.Subject,
t.ParentID,
th.HierarchyLevel + 1 AS HierarchyLevel,
CONVERT(varchar(MAX),th.HierarchyPath + CONVERT(VARCHAR(32),t.ParentID) + '/') AS HierarchyPath
FROM Task t
INNER JOIN TaskHierarchy th ON
t.ParentID = th.TaskID
)
SELECT *
FROM TaskHierarchy
ORDER BY HierarchyLevel, [Subject]
Run Code Online (Sandbox Code Playgroud)