小编Ste*_*vds的帖子

LINQ查询OrderBy不起作用

_db.InstellingAdressens
    .Where(l => l.GEMEENTE.Contains(gem_query))
    .OrderBy(q => q.GEMEENTE)
    .Select(q => q.GEMEENTE)
    .Distinct();
Run Code Online (Sandbox Code Playgroud)

这是查询.它返回一个List<string>但字符串根本没有排序.为什么OrderBy没有效果?以及如何解决它?

c# linq sql-order-by

4
推荐指数
2
解决办法
3471
查看次数

MVC使用Action Filter检查URL中的参数.停止执行

我想做以下事情:

当url没有instID时,我想重定向到该"Instelling"动作

在这个控制器中,每个方法都需要instID.

        [RequiredParameter(parameterName="instID", controllerToSend="Instelling")]
        public ActionResult Index(int? instID) {
            //if (!instID.HasValue) {
            //    return RedirectToAction("Index", "Instelling");
            //}

            var facts = _db.Instellingens.First(q => q.Inst_ID == instID).FacturatieGegevens;

            return View(facts);
        }
Run Code Online (Sandbox Code Playgroud)

所以这是在控制器中.

actionfilter:

namespace MVC2_NASTEST.Controllers {
    public class RequiredParameterAttribute : ActionFilterAttribute {

        public string parameterName { get; set; }
        public string actionToSend { get; set; }
        public string controllerToSend { get; set; }

        public override void OnActionExecuting(ActionExecutingContext filterContext) {

            if (parameterName != string.Empty) {
                if (filterContext.ActionParameters.ContainsKey(parameterName) && filterContext.ActionParameters[parameterName] …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-routing action-filter

4
推荐指数
1
解决办法
9559
查看次数

mvc ActionLink中的RouteValueDictionary/object问题

所以这里:

我有一个html帮助器,它ActionLink使用当前url的可选参数呈现s.这个html帮助器还允许您根据需要添加一些可选参数,并将它们合并为1 RouteValueDictionary.

    public static string ActionLinkwParams(this HtmlHelper helper, string linktext, string action, string controller, object extraRVs, object htmlAttributes) {

        //get current optional params from current URL
        NameValueCollection c = helper.ViewContext.RequestContext.HttpContext.Request.QueryString;

        //put those in a dict
        RouteValueDictionary r = new RouteValueDictionary();
        foreach (string s in c.AllKeys) {
            r.Add(s, c[s]);
        }

        RouteValueDictionary htmlAtts = new RouteValueDictionary(htmlAttributes);

        RouteValueDictionary extra = new RouteValueDictionary(extraRVs);

        //merge them
        RouteValueDictionary m = RouteValues.MergeRouteValues(r, extra);

        return helper.ActionLink(linktext, action, controller, m, htmlAtts).ToHtmlString();
    }
Run Code Online (Sandbox Code Playgroud)

这很完美,但我现在添加了SecurityAware Actionlinks.

所以 …

asp.net-mvc actionlink routevalues

4
推荐指数
1
解决办法
7553
查看次数

foreach 循环中任务/等待的最佳实践

我在使用任务/等待的 foreach 中有一些耗时的代码。它包括从数据库中提取数据、生成 html、将其发布到 API 以及将回复保存到数据库。

模型看起来像这样

List<label> labels = db.labels.ToList();
foreach (var x in list) 
{
    var myLabels = labels.Where(q => !db.filter.Where(y => x.userid ==y.userid))
                         .Select(y => y.ID)
                         .Contains(q.id))

    //Render the HTML
    //do some fast stuff with objects

    List<response> res = await api.sendMessage(object);  //POST

    //put all the responses in the db
    foreach (var r in res) 
    {
        db.responses.add(r);
    }

    db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

从时间上看,生成 Html 并将其发布到 API 似乎花费了大部分时间。

理想情况下,如果我可以生成下一个项目的 HTML,并等待帖子完成,然后再发布下一个项目,那就太好了。

也欢迎其他想法。人们会怎样做呢?

我首先想到Task在上面添加一个foreach并等待其完成然后再进行下一个 POST,但是我如何处理最后一个循环......感觉很混乱......

c# asp.net-mvc optimization async-await

3
推荐指数
1
解决办法
5255
查看次数

从多个字段填充选择列表

我的问题非常简单.假设我有一个用户下拉列表.在数据库中,我的用户表有3个字段:

 user_id
 user_name
 user_firstname
Run Code Online (Sandbox Code Playgroud)

在我的MVC应用程序中,我想将这些用户链接到项目.这就是为什么我想要下拉列表.

现在,我希望有一个选择列表,ID为值,firstname和lastname为'text'

  SelectList sl = new SelectList(users, "user_id", "user_name");
Run Code Online (Sandbox Code Playgroud)

现在我如何在文本中获得名字?这应该相当容易,但似乎不是......

asp.net-mvc selectlist linq-to-sql

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

生成一批随机密码

生成随机密码很简单.但是生成批次更加困难.

    public static string getRandomPassword(int letters, int getallen) {
        //int letters = 8;
        //int getallen = 5;

        char[] letterdeel = new char[letters];
        int minGetal = (int)Math.Pow(10, getallen - 1);
        int maxGetal = (int)Math.Pow(10, getallen);

        string password;
        Random r = new Random();
        int test = (int)(DateTime.Now.Ticks);
        for (int i = 0; i < letters; i++) {
            r = new Random((int)(DateTime.Now.Ticks) + i);
            bool capital = r.Next(2) == 0 ? true : false;
            if (capital) {
                letterdeel[i] = (char)r.Next(65, 91);
            } else …
Run Code Online (Sandbox Code Playgroud)

c# random passwords

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

Linq语句需要优化

我写了以下代码:

//get the user from the DB
var tmpuser = _db.aspnet_Users.First(q => q.UserName == user.Identity.Name);

//list the direct connections to Verbond
List<Verbond> verb1 = tmpuser.UsersVerbondens
                             .Where(q => q.Schooljaar.Sch_Schooljaar == schooljaarparam)
                             .Select(q => q.Verbond)
                             .ToList();

//list the connected Facturatieverbonden
List<FacturatieVerbonden> verb2 = tmpuser.UsersFacturatieVerbondens
                                         .Where(q => q.Schooljaar.Sch_Schooljaar == schooljaarparam)
                                         .Select(q => q.FacturatieVerbonden)
                                         .ToList();

//loop through the facturatieverbonden and add their verbonds to the first list
foreach (FacturatieVerbonden v in verb2) {
    verb1.AddRange(v.Verbonds);
}

//make a distinct list
List<Verbond> test = verb1.Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)

因此,用户可以连接到0或更多 …

c# linq lambda linq-to-sql

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