我有一个 IQueryable 对象,它是视图的结果(使用 Visual Studio 中的数据模型)。
我想对对象应用额外的过滤器,但我不希望它返回到数据库并使用额外的 where 子句再次运行查询。该查询需要几秒钟才能运行,因此我希望 linq 简单地过滤当前列表而不是重新生成查询。
当我执行 .where() 函数时,如何防止 linq to sql 返回数据库?
我仍在努力思考如何正确使用 LINQ-to-SQL,而不仅仅是编写自己的 sproc。
在属于的代码中,将 userId 传递给方法,然后 LINQ 使用它从GroupTable表中获取与userId匹配的所有行。GroupUser表的主键是GroupUserId,它是Group表中的外键。
/// <summary>
/// Return summary details about the groups a user belongs to
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public List<Group> GroupsForUser(int userId)
{
DataAccess.KINv2DataContext db = new DataAccess.KINv2DataContext();
List<Group> groups = new List<Group>();
groups = (from g in db.Groups
join gu in db.GroupUsers on g.GroupId equals gu.GroupId
where g.Active == true && gu.UserId == userId
select new Group
{
Name …Run Code Online (Sandbox Code Playgroud) 如何像在常规 SQL 中一样使用 LINQ 重命名表列重命名
SELECT t.template_nm as [Template Name]
FROM Template t
Run Code Online (Sandbox Code Playgroud)
我从互联网上找到了答案,我可以重命名列名。但是两个单词之间不能有空格。
var template = from t in db.TEMPLATEs
select new { Template_Name = t.TEMPLATE_NM };
Run Code Online (Sandbox Code Playgroud)
但我想重命名它而不用下划线(_)“模板名称”
请帮忙
谢谢你
我正在使用 Linq to Sql 合并两个列表。使用 List1 和 List2:
var tr = List1.Union(List2).ToList();
Run Code Online (Sandbox Code Playgroud)
Union 工作正常,但问题是它正在检查每一列并删除我想要的一些行。所以我想知道是否有一种方法可以仅基于id每个列表的一列执行联合?
就像是:
var t = List1.id.Union(List2.id).ToList();
Run Code Online (Sandbox Code Playgroud)
这不起作用,但我想知道是否有办法做到这一点,无论是使用 LINQ 还是 T-SQL
我正在尝试在 EF 查询中进行左连接。我收到以下错误:
错误 CS1941 连接子句中的表达式之一的类型不正确。调用“GroupJoin”时类型推断失败
这是 C# 代码:
var foo = from m in db.ClientMasters
join a in db.Orders on new { m.Id, Status = "N" } equals new { a.ClientID, a.Status } into a_join
from a in a_join.DefaultIfEmpty()
select new { m.ClientID, a.ID };
Run Code Online (Sandbox Code Playgroud) 在某些过程之后,我想从表中删除重复项并提交更改,因此只保留单个值。
我有三个移除标准:
因此,如果存在具有相同名称、相同日期和相同状态的记录......删除一个。哪一个都无所谓。
我有:dbContext.tbl_mytable
我在使用 AutoMapper(版本 5.1.1)投影结合 Linq OrderBy Child 属性表达式时遇到问题。我正在使用 Entity Framework Core(版本 1.0.0)。我收到以下错误:
“必须是可还原节点”
我的 DTO 对象如下
public class OrganizationViewModel
{
public virtual int Id { get; set; }
[Display(Name = "Organization Name")]
public virtual string Name { get; set; }
public virtual bool Active { get; set; }
public virtual int OrganizationGroupId { get; set; }
public virtual string OrganizationGroupName { get; set; }
public virtual int StrategyId { get; set; }
public virtual string StrategyName { get; set; }
public …Run Code Online (Sandbox Code Playgroud) 如何检查使用 Linq to sql 创建的组中的任何项目的条件是否为真?
假设我们有 3 个表:Invoice,Order和OrderItem。
我想知道发票上所有订单的总数,以及发票上订单中的任何订单项目是否有折扣。
from o in db.Orders
group o by new
{
InvoiceId = o.InvoiceId,
LocationId = o.LocationId,
} into g
select new
{
InvoiceId = g.Key.InvoiceId,
LocationId = g.Key.LocationId,
Total = g.Sum(x => x.Total).
HasDiscount = <???>
}
Run Code Online (Sandbox Code Playgroud)
我尝试过,let discountedItems = o.OrderItems.Where(i.Discount != 0)但我不知道如何引用正确的 OrderItems。
编辑:
Order Properties: Id, InvoiceId, LocationId, Total
OrderItem Properties: Id, OrderId, Discount- 假设折扣是一个整数值
建议的答案 …
我有一个清单:
var list = new List<Foo>() {
new Foo() { FooId = 1, GroupId = 1, ValueA = 3},
new Foo() { FooId = 2,GroupId = 1, ValueA = 40},
new Foo() { FooId = 3,GroupId = 2, ValueA = 80},
new Foo() { FooId = 4, GroupId = 2, ValueA = 20},
};
Run Code Online (Sandbox Code Playgroud)
我只想获取最新记录,因此结果如下:
| GroupId | ValueA |
|---------|--------|
| 1 | 40 |
| 2 | 20 |
Run Code Online (Sandbox Code Playgroud) 我希望得到一个First使用Linq2Sql而不会引发异常,如果没有找到结果.
我知道FirstOrDefault,但是如果我收到默认值,我不知道它是否在数据库中,或者它是否作为返回OrDefault.
有没有办法让一个First没有引发异常,但有知道接收到的值是否是从数据库中?
我知道我可以先检查Any(),但这意味着要两次访问数据库.如果可能的话,我想避免这种情况.
linq-to-sql ×10
c# ×8
linq ×6
.net ×2
sql ×2
sql-server ×2
automapper ×1
collections ×1
join ×1
naming ×1
projection ×1
t-sql ×1