问题列表 - 第26728页

LINQ .Cast()扩展方法失败但(类型)对象有效

要在一些LINQ to SQL对象和DTO之间进行转换,我们在DTO上创建了显式的转换运算符.这样我们就可以做到以下几点:

DTOType MyDTO = (LinqToSQLType)MyLinq2SQLObj;
Run Code Online (Sandbox Code Playgroud)

这很好用.

但是,当您尝试使用LINQ .Cast()扩展方法进行强制转换时,它会抛出一个无效的强制转换异常,表示无法将类型Linq2SQLType强制转换为DTOType类型.即以下不起作用

List<DTO.Name> Names = dbContact.tNames.Cast<DTO.Name>()
                                               .ToList();
Run Code Online (Sandbox Code Playgroud)

但下面的工作正常:

DAL.tName MyDalName = new DAL.tName();
DTO.Name MyDTOName = (DTO.Name)MyDalName;
Run Code Online (Sandbox Code Playgroud)

以下也行得正常

List<DTO.Name> Names = dbContact.tNames.Select(name => (DTO.Name)name)
                                               .ToList();
Run Code Online (Sandbox Code Playgroud)

为什么.Cast()扩展方法会抛出无效的强制转换异常?我过去曾经多次使用.Cast()扩展方法,当你将类似基类型的类型转换为派生类型时,它可以正常工作,但是当对象有一个显式的强制转换操作符时,它就会失效.

c# linq extension-methods casting

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

使用Spring的KeyHolder和以编程方式生成的主键

我使用Spring的NamedParameterJdbcTemplate来执行对表的插入.该表在序列上使用NEXTVAL来获取主键.然后,我希望将生成的ID传回给我.我正在使用Spring的KeyHolder实现,如下所示:

KeyHolder key = new GeneratedKeyHolder();
jdbcTemplate.update(Constants.INSERT_ORDER_STATEMENT, params, key);
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此声明时,我得到:

org.springframework.dao.DataRetrievalFailureException: The generated key is not of a supported numeric type. Unable to cast [oracle.sql.ROWID] to [java.lang.Number]
    at org.springframework.jdbc.support.GeneratedKeyHolder.getKey(GeneratedKeyHolder.java:73)
Run Code Online (Sandbox Code Playgroud)

我缺少什么想法?

spring primary-key oracle10g spring-jdbc jdbctemplate

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

Visual Studio窗口,显示方法列表

在Visual Studio中,是否有一个窗口显示活动类中的方法列表?像Solution Explorer这样的小窗口会很棒.在Eclipse中,有一个.

visual-studio-2008 visual-studio

115
推荐指数
11
解决办法
11万
查看次数

JQuery - 获取表体中的行数

我有一个HTML表,定义如下:

<table id="myTable" cellpadding="0" cellspacing="0">
  <thead>
    <tr>
      <th>First Name</th>
      <th>Last Name</th>
      <th>Birth Date</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>John</td>
      <td>Smith</td>
      <td>03-11-1980</td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

我想了解如何确定表格部分中的行数 ,而不是通常的表格.如何使用JQuery确定表的tbody部分中有多少行?tbody

谢谢!

jquery

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

地理本体准备使用?

我正在寻找一个包含地理知识的本体论.特别是我想要这些类型的信息:

  • 政治国家/地区/城市/城市地区
  • 地理区域(例如大陆,山脉,湖泊等)

例如,从节点"纽约"开始,我希望能够找到像纽约州,美国等父母,以及曼哈顿,布朗克斯等儿童.我找不到任何开源/免费使用.我知道很多研究人员从维基百科中提取这些信息,但我找不到任何现成的软件包.我还检查了OpenStreetMap,它对数据量很大,但似乎没有包含适当的地理本体.

即使是网络服务也会很好!

任何提示?Mulone

gis open-source geography ontology

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

.NET:从Dictionary <K,V>生成字符串的有效方法?

假设我有一个Dictionary<String,String>,我想生成一个字符串表示."石头工具"的方式是:

private static string DictionaryToString(Dictionary<String,String> hash)
{
    var list = new List<String> ();
    foreach (var kvp in hash)
    {
        list.Add(kvp.Key + ":" + kvp.Value);
    }
    var result = String.Join(", ", list.ToArray());
    return result;
}
Run Code Online (Sandbox Code Playgroud)

有没有一种有效的方法在C#中使用现有的扩展方法来做到这一点?

我知道List上的ConvertAll()ForEach()方法,可以用来消除foreach循环.是否有类似的方法我可以在Dictionary上使用迭代项目并完成我想要的东西?

.net extension-methods dictionary

10
推荐指数
2
解决办法
1378
查看次数

无法在C中释放const指针

我怎么能免费const char*?我分配了新内存使用malloc,当我试图释放它时,我总是收到错误"不兼容的指针类型"

导致这种情况的代码如下:

char* name="Arnold";
const char* str=(const char*)malloc(strlen(name)+1);

free(str); // error here
Run Code Online (Sandbox Code Playgroud)

c free const

65
推荐指数
3
解决办法
4万
查看次数

自动释放CGMutablePathRef?

我正在为iphone开发.我想通过CGPathCreateMutable()创建一个可变路径,我想将它从创建它的函数中返回.我想在完成它之后调用CGPathRelease().但是因为我要回来了,我希望自动释放它.由于Quartz路径是一个C代码(并且看起来不像是一个客观的C对象),所以我不能在它上面调用autorelease是正确的吗?

编辑:对于偶然发现此问题的其他人,以下建议仅适用于返回Core foundation对象的C函数.对于返回Core foundation对象的目标C方法,请参阅返回Quartz对象的Ownership

objective-c quartz-graphics

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

VS2010/.NET 4.0中BackgroundWorker线程访问的区别?

这是一个有趣的 - 在针对.NET 2.0/.NET 3.0/.NET 3.5运行的VS2005/VS2008中,BackgroundWorker线程可能无法直接更新启动该线程的WinForms表单上的控件 - 您将从System.InvalidOperationExceptionBackgroundWorker中获取说明"跨线程操作无效:控制从其创建的线程以外的线程访问''控件'".我记得2004年左右,当我第一次开始使用后台线程编写.NET WinForms应用程序时.有几种解决问题的方法 - 这不是一个要求答案的问题.

最近我一直在说,这种操作写在VS2010/.NET 4.0的时候,现在允许.这似乎不太可能,因为这种对象访问限制一直是线程安全编程的一个相当基本的部分.允许BackgroundWorker线程直接访问不由其自身拥有但由其父UI形式拥有的对象似乎与该原则相反.通过.NET 4.0文档进行的拖网没有发现任何可以解释这种行为的明显变化.

我没有VS2010/.NET 4.0来测试它 - 有权访问该工具集的人是否知道模型是否已更改为允许这种线程交互?我想将来利用它,或者部署线索.;)

c# multithreading .net-4.0 backgroundworker winforms

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

std :: string insert方法有多么模糊的重载?

环境:使用STLPort 5.1.4的VS2005 C++.

编译以下代码段:

std::string copied = "asdf";
char ch = 's';
copied.insert(0,1,ch);
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Error   1   error C2668: 'stlpx_std::basic_string<_CharT,_Traits,_Alloc>::insert' : ambiguous call to overloaded function   
Run Code Online (Sandbox Code Playgroud)

似乎问题是对字符串对象的insert方法调用.

两个定义的重载是

void insert ( iterator p, size_t n, char c );
string& insert ( size_t pos1, size_t n, char c );
Run Code Online (Sandbox Code Playgroud)

但是鉴于STLPort使用一个简单的char*作为迭代器,我的代码中insert方法中的文字零是不明确的.

因此,虽然我可以通过暗示如此轻松地克服这个问题

copied.insert(size_t(0),1,ch);
Run Code Online (Sandbox Code Playgroud)

我的问题是:规范中是否存在这种过载和可能模糊的问题?或者更有可能是特定STLPort实现的意外副作用?

(请注意,Microsoft提供的STL没有此问题,因为它有一个迭代器类,而不是裸指针)

c++ stl stlport

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