考虑这段代码
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结束,这里发生了什么?
我正在尝试使用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) 插入新子记录的最佳方法是:使用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) 我有一个包含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,但我无法摆脱任何表格,第二个例子是不同于我的情况.我已经读过,循环关系是不可取的,但我真的没有看到任何解决这个问题的方法.这甚至是一个问题,如果是这样,我该如何解决?请帮我!
我正在使用反射来调用泛型方法,该方法返回一个对象,我想转换该对象以在之后调用方法。
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()?
说我有两个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) 我正在尝试实现这个如何在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) 无论出于何种原因,这似乎都很简单.特别是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)
顺便说一下,当我在这里时,我想知道你们是否有可能知道是否有可能找出是否有按钮点击,例如关机按钮?或者,如果不可能,有一种方法可以知道计算机何时即将关闭.
我再一次感激,谢谢.
我想重构这两个方法,唯一的区别是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).似乎有一种方法可以使用表达式树来完成此操作,但是我找不到任何我想要做的确切示例,谢谢.
我想通过比较一个属性来对两个匿名类型数组执行交叉.集合是具有两个属性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动态进行比较
我正在尝试解决这个问题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# ×8
linq ×5
.net ×1
c ×1
collections ×1
datacontext ×1
foreach ×1
generics ×1
lambda ×1
linq-to-sql ×1
msbuild ×1
reflection ×1
sql ×1
windows ×1