下面的代码适用于StartsWith,Contains但是当我尝试时,Equals我得到了这个异常:类型'System.String'上的多个方法'Equals'与提供的参数兼容.
要恢复,CreatePredicate可以构建3种类型的谓词,但只有Equals不起作用:
AList.Where(x => x.MyField.StartsWith("ValueToSearch")); //OKAList.Where(x => x.MyField.Contains("ValueToSearch")); //OKAList.Where(x => x.MyField.Equals("ValueToSearch")); //Not OK..
public enum TypeSearch
{
StartsWith = 1,
Contains = 2,
Equals = 3
}
private static Expression<Func<T, bool>> CreatePredicate<T>(string member, object value, TypeSearch type)
{
var p = System.Linq.Expressions.Expression.Parameter(typeof(T));
System.Linq.Expressions.Expression body = p;
foreach (var subMember in member.Split('.'))
{
body = System.Linq.Expressions.Expression.PropertyOrField(body, subMember);
}
var res = System.Linq.Expressions.Expression.Lambda<Func<T, bool>>(
System.Linq.Expressions.Expression.Call(
System.Linq.Expressions.Expression.Call(
body,
"ToUpper", null), …Run Code Online (Sandbox Code Playgroud) 我正在使用sql server 2008.我有三个表tableA,tableB和表C.在表A中,我有两列,一个是Employeeid,另一个是Projectid.在表B中,我有两列,一列是employeeid,另一列是Employeename.在表C中,我有两列,一列是projectid,另一列是项目名称.
我使用以下查询来显示tableA和表B中的非公共行(不匹配的Employeeid)
SELECT A.EmployeeID FROM A
EXCEPT
SELECT B.EmployeeID FROM B
Run Code Online (Sandbox Code Playgroud)
除了Employeeid之外,我还希望显示projectname.即)我需要这样的:
Employeeid|projectname
1 |ABC
2 |XYZ
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何使用sql server 2008做到这一点?
我有一个用户在数据库上拥有db_datareader,db_datawriter权限.我想将隔离级别设置为用户可以访问的DB.我的用户需要具有哪些权限才能设置这些权限.使用的数据库:SQL SERVER 2008
查询1 =从ITEMS i中选择前5名i.item_id
查询2 =从ITEMS i中选择前5名i.item_id,i.category_id
即使我删除了前5个子句,它们仍会返回不同的行.
如果我运行"从ITEMS i中选择前5个i.*",这将返回一个完全不同的结果集!
嗨,我创建了这个功能,用于将游戏世界分成块.每个块大小为32块.此公式计算给定世界坐标的给定块编号的起始坐标.它运作良好,但我认为可以优化它,但我不知道.重要的是公式与负数一起使用.
static int wrld2chnk(int wrld)
{
if (wrld % 32 != 0)
{
if (wrld < 0)
wrld -= (32 + wrld % 32);
else
wrld -= wrld % 32;
}
return wrld;
}
Run Code Online (Sandbox Code Playgroud)
//这些是可用于验证结果的示例值.每个rpw中的第一个值是方法输入,第二个是输出:
(0, 0);
(31, 0);
(32, 32);
(33, 32);
(-1, -32);
(-31, -32);
(-32, -32);
(-33, -64);
(-34, -64);
(-64, -64);
(-70, -96);
Run Code Online (Sandbox Code Playgroud) 我在Linqer尝试了下面的LINQ查询它工作正常,但是当我尝试使用C#时,它给出了以下错误
from IHeal_Mnt_Tickets in iHealEntities.iHeal_Mnt_Tickets
where
Tickets.Active == 1 &&
Tickets.MntID == 1 &&
Tickets.InsertedOn >= fromdate &&
Mnt_Tickets.InsertedOn <= todate &&
(new string[] { "Resolved", "Assigned" }).Contains(Tickets.status)
group Tickets by new {
Tickets.Instance
} into g
select new {
Instance = g.Key.Summus_Instance,
Assigned = (Int64?)g.Count(p => p.iHealID != null),
resolved = (System.Int64?)g.Sum(p => (p.status == "Resolved" ? 1 : 0)),
domain = (System.Int64?)g.Sum(p => (p.status == "Assigned" ? 1 : 0)),
iHeal_Closure = (Decimal?)Math.Round((Double)(Double)g.Sum(p => (p.iHeal_Cur_status == "Resolved" ? …Run Code Online (Sandbox Code Playgroud) 我的表看起来像这样:
Name | Maths | Science | Social
-----+-------+---------+-------
ABC NULL A+ NULL
ABC B NULL NULL
ABC NULL NULL A
XYZ A NULL NULL
XYZ NULL B NULL
Run Code Online (Sandbox Code Playgroud)
情况是每个教师给出的成绩,并以上述格式存储在表格中.学生ABC已经参加了所有的论文并且他的表现有成绩,学生XYZ只出现数学和科学所以他应该只有两个等级
现在我的结果应该是这样的
Name | Maths | Science | Social
-----+-------+---------+-------
ABC B A+ A
XYZ A B NULL
Run Code Online (Sandbox Code Playgroud)
我试图用我所有可能的选项来检索这个.
我有桌子roles和users.该id从roles是列的外键role的表users.
有两个角色:support和经理.如何指定为用户peter分配两个角色?
角色
| id | role |
|----|---------|
| 1 | support |
| 2 | manager |
Run Code Online (Sandbox Code Playgroud)
用户
| id | user | pass | role (FK) |
|----|----------|-------|-----------|
| 1 | peter | hash1 | 1,2 | <-- 2 foreign keys
| 2 | jennifer | hash2 | 2 |
Run Code Online (Sandbox Code Playgroud) 我有一个C#方法需要检索字符串的第一个字符,并查看它是否存在于包含特定unicode字符的哈希集中(所有从右到左的字符).
所以我在做
var c = str[0];
Run Code Online (Sandbox Code Playgroud)
然后检查hashset.
问题是这个代码不适用于第一个char的代码点大于65535的字符串.
我实际创建了一个循环,遍历0到70,000之间的所有数字(最高RTL代码点大约68,000,所以我向上舍入),我从数字创建一个字节数组,并使用
Encoding.UTF32.GetString(intValue);
Run Code Online (Sandbox Code Playgroud)
用这个字符创建一个字符串.然后我将它传递给在HashSet中搜索的方法,并且该方法失败,因为它何时获得
str[0]
Run Code Online (Sandbox Code Playgroud)
这个价值永远不会是应有的.
我究竟做错了什么?
我正在尝试运行 Linqer(一个用于 sql -> linq 的程序),并在创建数据库连接并尝试生成“linq to sql 模型文件”时出现此错误。
错误:文件C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools/SqlMetal.exe not found
我的文件位于文件夹中:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools,
如何将其设置为使用 v10.0A 而不是 v8?
我已检查我已在 Visual Studio 上安装了所有 microsoft SDK。我该如何为此设置正确的路径?我将不胜感激任何帮助!谢谢