如何将以下语句移植到PCL?
# app/models/component.rb
class Component < ActiveRecord::Base
...
validates :size_id, uniqueness: { scope: :ingredient_id }
...
end
# app/db/migrate/20160412134948_add_uniqueness_index_to_components_table.rb
class AddUniquenessIndexToComponentsTable
def change
add_index :components, [:size_id, :ingredient_id], unique: true, name: 'components_uniqueness_validation'
end
end
上面的代码无法编译,我总是收到以下错误消息:
using System.Linq;
string value = ...;
if (value.Any(ch => ch > Byte.MaxValue)) {
throw new ArgumentException("String contains non-ASCII characters.", "value");
}
答案 0 :(得分:4)
看起来像string.GetEnumerator()
is not supported in the PCL。因此,IEnumerable<char>
的隐式实现也不是。
您可以通过
轻松获取 支持linq的字符数组if (value.ToCharArray().Any(ch => ch > Byte.MaxValue)) {
throw new ArgumentException("String contains non-ASCII characters.", "value");
}
我会注意到,如果做了很多事情,可能会出现创建无关数组的性能问题。如果您可以测量由此导致的性能问题,则可以使用较低级别的方法:
for(int i=0; i < value.Length; i++)
{
char ch = value[i];
if (ch > Byte.MaxValue))
{
throw new ArgumentException("String contains non-ASCII characters.", "value");
}
}