我的数据如下所示,我想运行linq
查询
MyTable
ID DATA
1 1:40:567
我的查询是
var query = (from tab in MyTable
where tab.DATA.Substring(0, tab.DATA.IndexOf(":")) == "1"))
select new
{
tab.ID,
tab.DATA
}).ToList();
我收到错误
InnerException {"传递给LEFT或SUBSTRING函数的长度参数无效。"} System.Exception {System.Data.SqlClient.SqlException}
我想要数据列的子字符串。请帮忙
答案 0 :(得分:2)
由于您只需要验证一个substring
,因此请尝试使用var data= (from tab in MyTable
where tab.DATA.Substring(0, 1) == "1")
select new
{
tab.ID,
tab.DATA
}).ToList();
获取一个字符,以获取示例:
<sizes type=”1”>
<size status=”1”>L</size>
<size status=”1”>XL</size>
<size status=”0”>XXL</size>
<sizes>
答案 1 :(得分:1)
这应该有效:
var query = (from tab in MyTable
where tab.DATA.TrimStart(new [] {' ', '0', '\t'}).StartsWith("1")
select new
{
tab.ID,
tab.DATA
}).ToList();
答案 2 :(得分:1)
试试这个:
var ref = require('ref');
var StructType = require("ref-struct");
var ffi = require('ffi');
var Post = StructType({
title: String,
link: String,
description: String,
});
// var vecPost = ref.refType(ref.types.Object);
var lib = ffi.Library('target/debug/libmain', {
'get_soup': ['Vec<Post>', ['String']]
});
var posts = lib.get_soup("realtin");
答案 3 :(得分:1)
您的代码将匹配以1:
开头的所有记录。如果这是你真正想要的,那么你可以这样做:
var query = (from tab in MyTable
where tab.DATA.StartsWith("1:")
...
这样做的另一个好处是能够利用DATA
上的索引(如果它存在)。
答案 4 :(得分:1)
试试这个
var query = (from tab in MyTable
where tab.DATA.Split(':')[0] == "1"))
select new
{
tab.ID,
tab.DATA
}).ToList();