我正在使用Linq to SQL,我有两个逗号分隔的字符串。
string1
来自数据库表,看起来像“Y,J,A,F,L,R,G”。
string2
是从对象获得的,看起来像“G,L”。
我正在努力检查string2
的内容是否在string1
。
这就是我现在所拥有的:
var result = from d in oTable
where d.string1.Contains(string2)
select d;
答案 0 :(得分:2)
因此,您可以查看All
或Any
方法,或使用Select
获取每个字符的结果。
string first = "Y,J,A,F,L,R,G";
string second = "G,L,X";
// result for each in "second"
IEnumerable<bool> contains = second.Split(',').Select(res => first.Contains(res));
// true if all are contained in first
bool all = second.Split(',').All(res => first.Contains(res));
// true if any is contained in first
bool any = second.Split(',').Any(res => first.Contains(res));
答案 1 :(得分:1)
您可以尝试:
然后使用LINQ Except(MSDN reference)来检查string1的所有子字符串是否都包含在string1中
<item name="android:textCursorDrawable">@null</item>
答案 2 :(得分:1)
感谢@SonerGönül以下工作。
var result = "G,L".All(c => "Y,J,A,F,L,R,G".Contains(c));
虽然我同意其他人的意见,但这并不是数据的存储方式,我会把它传递给我的客户。
答案 3 :(得分:1)
试试这种方式
string string2 = "G,L";
var result = from item in oTable
where string2.All(x => item.string1.Contains(x))
select item;
答案 4 :(得分:0)
您可以使用Union和Distinct。
var containts = string2.Union(string1).Count() == string1.Distinct().Count();
如果Union更改string1.Distinct()
的长度,则表示string2中还有其他内容不在string1中。如果长度没有改变(==
)那么它意味着string2中的每个东西都在string1内。
答案 5 :(得分:0)
您可以使用,Intersect
请参阅Demo Here
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
string str="Y,J,A,F,L,R,G";
string[] arr=str.Split(',');
string[] x=new String[2]{"G","r"};
IEnumerable<String> x1=arr.Intersect(x);
if(x1.Any())
{
foreach(string st in x1)
{
Console.WriteLine("Matched String: "+st);
}
}
else
{
Console.WriteLine("Empty Matching");
}
}
}