我有一个Java项目,我想转换为C#,看完这里和其他地方后发现了一个工具,Sharpen.
但是,为了使其运行起来(我是Java的新手),上面链接的站点描述了抓取源代码并将其构建为Eclipse IDE的插件,我不想这样做,因为我通常不这样做做Java.
有谁知道是否存在独立的EXE,它可以简单地利用Sharpen来获取给定的Java项目并通过绞拧器将其转换为C#?或者Java和C#是否足够相似,以便将代码手动移植到.NET应该非常简单?
我有这个功能,我想创建.当我解析它时,它工作正常,但实际上在数据库中创建函数它说我的列名无效.事实并非如此,我拼写正确.这是代码:
ALTER FUNCTION [dbo].[fnTally] (@SchoolId nvarchar(50))
RETURNS int
AS
BEGIN
DECLARE @Final nvarchar
IF EXISTS (
SELECT
question,
yes_ans,
no_ans,
na_ans,
blank_ans
FROM dbo.qrc_maintally
WHERE school_id = @SchoolId
)
IF yes_ans > no_ans AND yes_ans > na_ans
BEGIN
SET @Final = 'Yes'
END
ELSE IF no_ans > yes_ans AND no_ans > na_ans
BEGIN
SET @Final = 'No'
END
ELSE IF na_ans > yes_ans AND na_ans > no_ans
BEGIN
SET @Final = 'N/A'
END
RETURN @Final
END
Run Code Online (Sandbox Code Playgroud) 我正在尝试从另一个服务中调用WCF服务,部分使用我在StackOverflow上找到的实现ChannelFactory的示例.
我在我的测试解决方案中创建了一个单独的控制台应用项目(VS 2008,btw),
namespace MyService.Test
{
class Program
{
static void Main(string[] args)
{
MySolution.MyTestClient proxy = new MyTestClient();
proxy = new MyTestClient();
proxy.Endpoint.Address = new EndpointAddress("http://localhost:8723/MySolution/");
// Instantiate a request object and assign values to its member variables.
MySolution.RemoteServiceMethod() theObject = new RemoteServiceMethod();
theObject.SomeProperty = "123";
theObject.SomeOtherProperty = "alpha";
Console.WriteLine("Calling the remote service method now...");
try
{
proxy.SubmitRemoteServiceRequest(proxy.theObject);
}
catch (FaultException<MySolution.RequestException> e)
{
// exception code hereMySolution
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是来自本地服务的App.Config,显示端点:
<system.serviceModel>
<client>
<endpoint …Run Code Online (Sandbox Code Playgroud) 当我遍历DataTable对象时,我需要针对通用字符串List中的项检查每个DataRow对象.
我发现了一个使用List的Find方法和一个委托的博客帖子,但是那个例子有一个单独的类(Person),我正在使用字符串对象的实例尝试类似下面的内容:
// My definition of the List object.
List<string> lstAccountNumbers = new List<string>();
...
// I populate the List via its Add method.
...
foreach (DataRow drCurrentRow in dtMyDataTable.Rows)
{
if (lstAccounts.Find(delegate(string sAccountNumber) { return sAccountNumber == drCurrentRow["AccountNumber"]; })
{
Found_DoSomething();
}
else
{
NotFound_DoSomethingElse();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,使用这种语法我收到"不能隐式地将类型'字符串'转换为'bool'"作为if块.
有人可以澄清我做错了什么以及如何最好地完成我想要做的事情?
我有一个与我之前的问题相关的问题.在LINQ的现有位中涉及多个连接,我试图采用包含连接的每个单独方法并将其转换为CompiledQuery.
一,正常的LINQ方法:
private IQueryable<Widget> GetWidgetQuery()
{
return db.Widgets.Where(u => (!u.SomeField.HasValue || !u.SomeField.Value));
}
Run Code Online (Sandbox Code Playgroud)
在这里,CompiledQuery的委托(字段)定义沿着这些方向:
private static readonly Func<DBDataContext, IQueryable<Widget>> GetWidgetQuery =
CompiledQuery.Compile((DBDataContext db) =>
db.Widgets.Where(u => (!u.SomeField.HasValue || !u.SomeField.Value)));
Run Code Online (Sandbox Code Playgroud)
如果我将鼠标悬停在方法GetWidgetQuery()的正常LINQ语句上,我看到它是一个如下方法:
(method) IQueryable<Widget> GetWidgetQuery()
Run Code Online (Sandbox Code Playgroud)
但是,编译的查询委托(字段)不同如下:
(field) Func<DBDataContext, IQueryable<Widget>> GetWidgetQuery
Run Code Online (Sandbox Code Playgroud)
在作为LINQ语句的一部分执行后者时,语法不同如下.首先,正常LINQ参与加入:
var myquery =
from wxr in GetWidgetXRQuery()
join w in GetWidgetQuery() on wxr.WidgetID equals w.ID
select new DTO.WidgetList
{
...
}
Run Code Online (Sandbox Code Playgroud)
在这里,以委托形式调用CompiledQuery:
var myquery =
from wxr in GetWidgetXRQuery() …Run Code Online (Sandbox Code Playgroud) 运行SQL 2005 X64.
首先,在数据库上创建以下存储过程:
CREATE PROCEDURE dbo.Test
@Value int = null
AS
BEGIN
IF (IsNull(@Value, '') = '')
SELECT '*I am NULL!*'
ELSE
SELECT 'I am ' + CONVERT(varchar(20), @Value)
END
Run Code Online (Sandbox Code Playgroud)
尝试按如下方式执行上述过程,您将得到以下结果:
EXEC dbo.Test
Run Code Online (Sandbox Code Playgroud)
我是NULL!
现在,改变proc以使EXEC语句成为sproc本身的一部分:
ALTER PROCEDURE dbo.Test
@Value int = null
AS
BEGIN
IF (IsNull(@Value, '') = '')
SELECT 'I am NULL!'
ELSE
SELECT 'I am ' + CONVERT(varchar(20), @Value)
END
EXEC dbo.Test
Run Code Online (Sandbox Code Playgroud)
如果你现在执行它,你得到......
我是NULL!
我是NULL!
我是NULL!
... 无限广告直到输出因此错误而中断:
消息217,级别16,状态1,过程测试,第16行超出最大存储过程,函数,触发器或视图嵌套级别(限制32).
暂时忽略这根本不是一个标准做法而且很可能有人会偶然做出类似的事情,有人可能会提供一些关于SQL 2005在思考第二个版本时"思考"的低层洞察力.这个程序执行了吗?
我正在尝试为Linq语句构造一个Where子句,该子句需要确定集合中是否存在如下检索的AccountNumber值List<string>.
我到目前为止试过这个:
private void FindAccountNumbers(List<string> AccountNumbers)
{
var query = from abc
select new
{
AccountNumber = abc.AccountNumber
};
query = query.Where(AccountNumbers.Contains(x => x.AccountNumber));
}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下构建错误:
无法从用法中推断出方法'System.Linq.Queryable.Where(System.Linq.IQueryable,System.Linq.Expressions.Expression>)'的类型参数.尝试显式指定类型参数.
在运行时,query包含AccountNumber值,我试图根据AccountNumbers集合中找到的匹配(类似于TSQL中的IN语句)来减少它.我应该使用Intersect而不是Contains?我究竟做错了什么??
c# ×4
sql ×2
asp.net ×1
client ×1
datarow ×1
datatable ×1
endpoint ×1
generic-list ×1
java ×1
linq ×1
linq-to-sql ×1
recursion ×1
sharpen-tool ×1
sql-server ×1
wcf ×1