CompareToはここでは機能していません。
私のlinqクエリは
var result = from c in customers
where c.CustomerID.CompareTo(txtSerchId.Text) >= 0
select` c;
とemが例外を取得します
//////例外///////////
System.ArgumentException was caught
Message=Value does not fall within the expected range.
私のコードはこのようなものです
var result =
from c in customers
where c.CustomerID.CompareTo(txtSerchId.Text) >= 0
select c;
if (result != null)
{
IEnumerator<Customer> resultEnum = result.GetEnumerator();
while (resultEnum.MoveNext())
{
Customer c = (Customer)resultEnum.Current;
addToDataSet(Guid.NewGuid().ToString(), c);
}
ShowResult();
}
else
{
MessageBox.Show("No Customer found within criteria");
}
例外はこの行にあります
IEnumerator<Customer> resultEnum = result.GetEnumerator();
これを試して :
var query = from c in customers where c.CustomerID.Equals(txtSerchId.Text) select c;
あなたのコメントからの引用「私はユーザーが入力した値を私が持っているオブジェクトのコレクションと比較して、ユーザーが入力したIDよりも小さいまたは大きいIDを持つ顧客を検索しています。」
「より大きい」に対してこれを試してください:
int customerId = int.Parse(txtSerchId.Text); if (customerId > 0) { var result = from c in customers where c.CustomerID > customerId select c; }
コメントに情報が追加されたら更新します。
これを試して:
customers.ToList().Where(c => c.CustomerID.CompareTo(txtSerchId.Text) >= 0);
これは、最初にデータベースからすべてのレコードをプルし、次に文字列の比較に従ってそれらをフィルタリングするため、非常に非効率的であることに注意してください。しかし、正直なところ、私はより良い方法を知らないので、これは試してみる価値があるかもしれません。
シンプルにする:
平等のために:
var result = from c in customers where c.CustomerID ==Convert.ToInt32(txtSerchId.Text) select c;
グレーターの場合:where c.CustomerID >= Convert.ToInt32(txtSerchId.Text)
少ない場合:where c.CustomerID <= Convert.ToInt32(txtSerchId.Text)
var List = (from t in ObjCon.TableName
where t.GameDate.Value.CompareTo(GameDate) >= 0
join t1 in ObjCon.Teams on t.Home equals t1.TeamId
where t1.SportId == 3
*これは私のために働いた