Pau*_*els 80 c# sql operators in-operator
在SQL中,您可以使用以下语法:
SELECT *
FROM MY_TABLE
WHERE VALUE_1 IN (1, 2, 3)
C#中有等价物吗?IDE似乎将"in"识别为关键字,但我似乎无法在其上找到任何信息.
那么,是否可以执行以下操作:
int myValue = 1;
if (myValue in (1, 2, 3))
    // Do something
代替
int myValue = 1;
if (myValue == 1 || myValue == 2 || myValue == 3)
    // Do something
And*_*son 109
如果你想写.那么你可以创建一个允许你这样做的扩展.
static class Extensions
{
    public static bool In<T>(this T item, params T[] items)
    {
        if (items == null)
            throw new ArgumentNullException("items");
        return items.Contains(item);
    }
}
class Program
{
    static void Main()
    {
        int myValue = 1;
        if (myValue.In(1, 2, 3))
            // Do Somthing...
        string ds = "Bob";
        if (ds.In("andy", "joel", "matt")) 
        // Do Someting...
    }
}
thi*_*eek 82
List.Contains()我觉得你在寻找什么.C#有in keyword没有与operator你在SQL中引用的完全不同的目的.
有两种方法可以in在C#中使用关键字.假设您在C#中有一个字符串[]或List.
        string[] names; //assume there are some names;
        //find all names that start with "a"
        var results = from str in names
                      where str.StartsWith("a")
                      select str;
        //iterate through all names in results and print
        foreach (string name in results)
        {
            Console.WriteLine(name);
        }
参考你的编辑,我会用你的代码来做你需要的.
        int myValue = 1;
        List<int> checkValues = new List<int> { 1, 2, 3 };
        if (checkValues.Contains(myValue))
            // Do something 
JwJ*_*efy 23
你可以这样做:
var x = 99; // searched value
if (new[] {1,2,3,99}.Contains(x))
{
   // do something
}
您通常使用Contains集合的方法.
myCollection.Where(p => Enumerable.Range(1,3).Contains(p));
我希望它有所帮助.
C#中没有"in"运算符,"in"关键字仅用于"foreach(... in ...)"或"from ... in ...".
LINQ等效的SQL查询将是:
List<int> list = new List<int> { 1, 2, 3 };
var query = from row in my_table
            where list.Contains(row.value1)
            select row;
小智 5
我同意实现 In 运算符的最佳方法是使用扩展方法。我的做法有点不同:
public static bool In(this string str, string CommaDelimintedStringSet)
{
    string[] Values = CommaDelimintedStringSet.Split(new char[] { ',' });
    foreach (string V in Values)
    {
       if (str == V)
         return true;
    }
    return false;
}
不同之处在于,您不必在每个值两边加上引号,只需将整组逗号分隔的值加上引号,这样更容易键入:
bool result = MyString.In("Val1,Val2,Val3");
| 归档时间: | 
 | 
| 查看次数: | 73231 次 | 
| 最近记录: |