小编reg*_*tar的帖子

OrderBy如何处理C#中的字符串?

考虑这段代码

var strings2 = new List<string>
    {
        "0", // Ascii code 48 (decimal)
        "|"  // Ascii code 125 (decimal)
    };
var sorted = strings2.OrderBy(x => x).ToArray();
Run Code Online (Sandbox Code Playgroud)

排序包含"|", "0".现在考虑一下这段代码(我所做的就是"|"改为".")

var strings2 = new List<string>
    {
        "0", // Ascii code 48 (decimal)
        "."  // Ascii code 46 (decimal)
    };
var sorted = strings2.OrderBy(x => x).ToArray();
Run Code Online (Sandbox Code Playgroud)

现在排序包含".", "0" 在两种情况下"0"即使125> 48结束,这里发生了什么?

c# linq

11
推荐指数
3
解决办法
1852
查看次数

Visual Studio发布配置文件发布错误的构建配置

我正在尝试使用Visual Studio 2013自动部署Web Api 2项目.我已经创建了一个名为"Test"的发布配置文件,如下所示

<?xml version="1.0" encoding="utf-8"?>
    <!--
    This file is used by the publish/package process of your Web project. You can customize the behavior of this process
    by editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121. 
    -->
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <WebPublishMethod>FileSystem</WebPublishMethod>
        <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
        <LastUsedPlatform>x86</LastUsedPlatform>
        <SiteUrlToLaunchAfterPublish />
        <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
        <ExcludeApp_Data>False</ExcludeApp_Data>
        <publishUrl>C:\DbServiceDeploy</publishUrl>
        <DeleteExistingFiles>True</DeleteExistingFiles>
    </PropertyGroup>
    </Project>
Run Code Online (Sandbox Code Playgroud)

即使它有行<LastUsedBuildConfiguration> Release </ LastUsedBuildConfiguration>,似乎Visual Studio正在发布我的调试版本.我这样叫msbuild

    "C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe" C:\somefolder\Myproj.csproj /p:
DeployOnBuild=true /p:PublishProfile=Test
Run Code Online (Sandbox Code Playgroud)

msbuild visual-studio-2013

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

LINQ to SQL:InsertOnSubmit()与Add()

插入新子记录的最佳方法是:使用Add()InsertOnSubmit()?这些方法之间有什么区别吗?

InsertOnSubmit() 例:

using (DataContext db = new DataContext())
{
   Parent p = db.Parents.Where(q => q.ID == SomeID).SingleOrDefault();
   Child c = new Child();
   c.ForeignKeyID = p.ID;
   db.InsertOnSubmit(c);
   db.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)

Add() 例:

using (DataContext db = new DataContext())
{
   Parent p = db.Parents.Where(q => q.ID == SomeID).SingleOrDefault();
   Child c = new Child();
   p.Add(c);
   db.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)

c# sql linq datacontext linq-to-sql

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

数据库设计中的循环关系

我有一个包含4个表的数据库(还有更多,但只有4个导致问题).规则是:模型具有1到多个任务.任务具有一对多集.SuperSet具有一对多集合,而Model具有一对多SuperSet.SuperSet基本上只是一组集合.该设计导致了一个循环外观依赖图,如下所示:

Models <--------------------------- SuperSets
   ^                                    ^
   |                                    |
   |                                    |
Tasks  <---------------------------- Sets
Run Code Online (Sandbox Code Playgroud)

我已经阅读了这篇http://www.codeproject.com/Articles/38655/Prevent-Circular-References-in-Database-Design,但我无法摆脱任何表格,第二个例子是不同于我的情况.我已经读过,循环关系是不可取的,但我真的没有看到任何解决这个问题的方法.这甚至是一个问题,如果是这样,我该如何解决?请帮我!

database-design

3
推荐指数
2
解决办法
6808
查看次数

在运行时将对象强制转换为泛型类型

我正在使用反射来调用泛型方法,该方法返回一个对象,我想转换该对象以在之后调用方法。

public static string GetTableName(this ObjectContext context, Type T)
{
    var method = typeof(ObjectContext).GetMethod("CreateObjectSet", new Type[]{});
    var generic = method.MakeGenericMethod(T);
    var objectSet = generic.Invoke(context, null);

    var sqlString = objectSet.ToTraceString(); 
    // doesn't work because ToTraceString() isn't a method of object
    // it's a method of ObjectSet<T>
    ...
}
Run Code Online (Sandbox Code Playgroud)

T 直到运行时才知道。如何将 objectSet 转换为 ObjectSet<T> 以便能够调用 ToTraceString()?

c# generics reflection

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

加入两个集合,从第二个集合中获取值(左外连接)

说我有两个List<KeyValuePair<string, string>>a和b,其中a =

"one", "N",
"two", "N",
"three", "N"
Run Code Online (Sandbox Code Playgroud)

和b =

"one", "Y"
"two", "N"
Run Code Online (Sandbox Code Playgroud)

我想做一个左外连接,但是Value如果b中有一个条目则取b的值,所以结果应为=

"one", "Y" <- this value is taken from b
"two", "N",
"three", "N"
Run Code Online (Sandbox Code Playgroud)

我尝试过做一个普通的左外连接,但是Value"三" 的结果总是一个空字符串

    var res = (from l in a
              join r in b on l.Key equals r.Key into lrs
              from lr in lrs.DefaultIfEmpty()
              select new KeyValuePair<string, string>(l.Key, lr.Value)).ToArray();
Run Code Online (Sandbox Code Playgroud)

.net c# linq collections

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

动态LINQ表达式

我正在尝试实现这个如何在Linq where子句中指定动态字段名称?并得到一个编译器错误,说:

无法解析方法'Where(System.Linq.Expressions.LambdaExpression

public class Employee
{
    public string Name { get; private set; }
    public int Salary { get; private set; }

    public Employee(string name, int salary)
    {
        Name = name;
        Salary = salary;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在控制台应用程序的主要方法

var employees = new List<Employee>
{
    new Employee("Bob", 45000),
    new Employee("Jane", 25000),
    new Employee("Jim", 5)
};

var eParam = Expression.Parameter(typeof(Employee), "e");

var comparison = Expression.Lambda(
    Expression.LessThan(
        Expression.Property(eParam, "Salary"),
        Expression.Constant(40000)),
    eParam);
var c = from e in employees.Where(comparison) // COMPILER ERROR …
Run Code Online (Sandbox Code Playgroud)

c# linq

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

Foreach循环不能将字符转换为字符串

无论出于何种原因,这似乎都很简单.特别是Foreach循环给我这个错误"错误1无法将类型'char'转换为'string'".我做了一些研究,虽然它不想揭示它的自我.希望你们知道,非常感谢你的帮助.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace A_HtmlEditor
{
    public partial class Form1 : Form
    {
        AutoCompleteStringCollection data = new AutoCompleteStringCollection();

        public Form1()
        {
            InitializeComponent();
        }               

        // The error occurs in the foreach loop below    
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            webBrowser1.DocumentText = textBox1.Text;

            foreach(string s in textBox1.Text)
            {
                data.Add(s);
            } 
        }    
    }
}
Run Code Online (Sandbox Code Playgroud)

顺便说一下,当我在这里时,我想知道你们是否有可能知道是否有可能找出是否有按钮点击,例如关机按钮?或者,如果不可能,有一种方法可以知道计算机何时即将关闭.

我再一次感激,谢谢.

c# windows foreach

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

将强类型属性名称作为参数的方法

我想重构这两个方法,唯一的区别是currentUser对象上的属性得到更新(以及参数名称,但这并不重要).

public User SaveBaselineModelTemplateId(int baselineModelTemplateId)
{
    using (var db = _contextFactory.GetContext())
    {
        var currentUser = db.Users.Single(x => x.Login == Environment.UserName);
HERE -> currentUser.BaselineModelTemplateID = baselineModelTemplateId; 
        db.SaveChanges();
        return currentUser;
    }
}

public User SaveComparisonModelTemplateId(int comparisonModelTemplateId)
{
    using (var db = _contextFactory.GetContext())
    {
        var currentUser = db.Users.Single(x => x.Login == Environment.UserName);
HERE -> currentUser.ComparisonModelTemplateID = comparisonModelTemplateId; 
        db.SaveChanges();
        return currentUser;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要一种方法,我可以称之为SaveInt(ComparisonModelTemplateID, 42)SaveInt(x => x.ComparisonModelTemplateID, 42).似乎有一种方法可以使用表达式树来完成此操作,但是我找不到任何我想要做的确切示例,谢谢.

c#

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

使用Lambda Comparer交叉匿名类型

我想通过比较一个属性来对两个匿名类型数组执行交叉.集合是具有两个属性Id和Name的任意类型的数组.例如,给定集合一:

{ 1, "Bob",
  2, "Jane",
  3, "Fred" }
Run Code Online (Sandbox Code Playgroud)

和收集二:

{ 2, "",
  3, "",
  4, "" }
Run Code Online (Sandbox Code Playgroud)

是否可以编写一个Intesect语句来抓取基于Id的交集并获取非空白的名称,因此结果将是

{ 2, "Jane",
  3, "Fred" }
Run Code Online (Sandbox Code Playgroud)

现在我有

var data = one.Intersect(two, (x, y) => x.Id == y.Id).ToArray();
Run Code Online (Sandbox Code Playgroud)

但我不知道如何处理名称解析或如何使用lambda动态进行比较

c# linq lambda

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

在Windows与Linux上获得不同的答案

我正在尝试解决这个问题https://www.hackerrank.com/challenges/flowers 当我在我的机器上的Windows 7上的Visual Studio 2013中运行我的代码时,我得到了正确的答案,但在网站上(我很漂亮)确定他们使用Linux而且我很肯定这是他们使用gcc 4.9.2,C99标准的编译器)我得到非常大的答案数,特别是第一个测试用例的12588576(而不是13)和1395920336(而不是15)对于第二个测试用例.我猜这与qsort调用有关.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int comp_desc(const void * a, const void * b)
{
    int * aPtr = (int*)a;
    int * bPtr = (int*)b;
    return *bPtr - *aPtr;
}

int main()
{
    int flowersNeeded, numFriends, i;
    scanf("%d %d", &flowersNeeded, &numFriends);
    getchar();
    int flowerCosts[100];
    memset(flowerCosts, 0, 100);
    for (i = 0; i < flowersNeeded; ++i)
    {
        scanf("%d", &flowerCosts[i]);
    }
    qsort(flowerCosts, 100, sizeof(int), comp_desc);
    int flowersBought = 0;
    int moneySpent = 0;
    int …
Run Code Online (Sandbox Code Playgroud)

c

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