小编mar*_*l_g的帖子

如何在LINQ中执行子查询?

这是我试图转换为LINQ的查询示例:

SELECT *
FROM Users
WHERE Users.lastname LIKE '%fra%'
    AND Users.Id IN (
         SELECT UserId 
         FROM CompanyRolesToUsers 
         WHERE CompanyRoleId in (2,3,4) )
Run Code Online (Sandbox Code Playgroud)

CompanyRolesToUsers和之间存在FK关系Users,但它是多对多的关系,并且CompanyRolesToUsers是联结表.

我们已经构建了大部分网站,并且我们已经通过使用PredicateExtensions类构建Expressions来完成大部分过滤工作.

简单过滤器的代码如下所示:

 if (!string.IsNullOrEmpty(TextBoxLastName.Text))
 {
     predicateAnd = predicateAnd.And(c => c.LastName.Contains(
                                     TextBoxLastName.Text.Trim()));
 }

e.Result = context.Users.Where(predicateAnd);
Run Code Online (Sandbox Code Playgroud)

我正在尝试在另一个表中为子选择添加谓词.(CompanyRolesToUsers)

我希望能够添加的内容是:

int[] selectedRoles = GetSelectedRoles();
if( selectedRoles.Length > 0 )
{
    //somehow only select the userid from here ???:
    var subquery = from u in CompanyRolesToUsers
                   where u.RoleID in selectedRoles
                   select u.UserId;

    //somehow transform …
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-sql

67
推荐指数
3
解决办法
17万
查看次数

如何以编程方式清除控制器操作方法的outputcache

如果控制器操作在操作上指定了OutputCache属性,是否有任何方法可以清除输出缓存而无需重新启动IIS?

[OutputCache (Duration=3600,VaryByParam="param1;param2")]
public string AjaxHtmlOutputMethod(string param1, string param2)
{
  var someModel = SomeModel.Find( param1, param2 );

  //set up ViewData
  ...

  return RenderToString( "ViewName", someModel );
}
Run Code Online (Sandbox Code Playgroud)

我正在考虑使用HttpResponse.RemoveOutputCacheItem(string path)它来清除它,但是我很难弄清楚应该将它映射到action方法的路径.我将再次尝试使用ViewName呈现的aspx页面.

也许我只是手动插入的输出RenderToStringHttpContext.Cache,而是如果我不明白这一个.

更新

请注意,OutputCache是​​VaryByParam,测试出硬编码路径"/ controller/action"实际上并没有清除outputcache,所以看起来它必须匹配"/ controller/action/param1/param2".

这意味着我可能不得不恢复到对象级缓存并手动缓存输出RenderToString():(

asp.net asp.net-mvc

62
推荐指数
3
解决办法
4万
查看次数

Kentico:让一个webpart使用ajax重新加载第二个webpart

我正在尝试在Kentico中构建的场景是在一个Web部件中进行用户操作,导致重新加载/更新第二个Web部件而不重新加载整个页面.

一个例子是将一个项目添加到购物车:如果用户点击"添加购物项目"按钮(第一个webpart),那么页面标题中购物车(第二个webpart)中的项目总数应该更新而不重新加载整页.

我知道如何使用ASP.NET MVC应用程序执行此操作,但我还没有想出如何使用Kentico执行此操作.

javascript asp.net ajax postback kentico

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

标签 统计

asp.net ×2

ajax ×1

asp.net-mvc ×1

c# ×1

javascript ×1

kentico ×1

linq ×1

linq-to-sql ×1

postback ×1