C# 正在尝试打印字符串的前250个字符,但正在获取ArgumentOutofRangeExection“;错误

C# 正在尝试打印字符串的前250个字符,但正在获取ArgumentOutofRangeExection“;错误,c#,entity-framework,listview,linq-to-entities,asp.net-4.5,C#,Entity Framework,Listview,Linq To Entities,Asp.net 4.5,我正在将LINQ结果绑定到ListView,并尝试仅打印“大纲”列中的前250个字符,但当我尝试使用子字符串时,我得到了错误: System.ArgumentOutOfRangeException:索引和长度必须引用字符串中的位置。参数名称:长度 导致错误的代码是: <%#:Eval("Synopsis").ToString().Substring(0,250)%> 如果我同时删除ToString和Substring,错误就会消失,但整个概要都会打印出来。我做错了什么?只要开始

我正在将LINQ结果绑定到ListView,并尝试仅打印“大纲”列中的前250个字符,但当我尝试使用子字符串时,我得到了错误:

System.ArgumentOutOfRangeException:索引和长度必须引用字符串中的位置。参数名称:长度

导致错误的代码是:

<%#:Eval("Synopsis").ToString().Substring(0,250)%>


如果我同时删除ToString和Substring,错误就会消失,但整个概要都会打印出来。我做错了什么?

只要开始索引或长度超出字符串长度范围,就会出现
ArgumentOutOfRangeException
异常。在您的情况下,我认为字符串很可能已经少于250个字符了。相反,您可能需要以下内容:


250?Eval(“大纲”).ToString()子字符串(0250):Eval(“大纲”).ToString()%>

这意味着大纲长度小于250个字符。通过检查字符串的长度是否大于250并减少请求的长度以适应,可以很容易地解决此问题。我不熟悉LINQ,但这里有一个伪代码解决方案:

var length_of_request;

if length of synopsis < 250 then:
     length_of_request = length of synopsis
else:
     length_of_request = 250
请求的变量长度; 如果大纲长度<250,则: 请求的长度=概要的长度 其他: 请求的长度=250 然后调用
SubString
,将
length\u of_request
作为第二个参数