我需要将列表与字符串进行比较,并找到相似的whitch元素。即
List<string> listA = {"ProfileHeight", "ProfileWidth", "WebThickness"}
List<string> listB ={"ProfileHeightVisibility", "ProfileWidthVisibility", "WebThicknessVisibility", "FlangeThicknessVisibility", "DepthVisibility"}
我想知道是否可以使用Linq。我希望结果是一个列表,列表中的元素名称类似于listA中的字符串。 statemant即“ProfileHeightVisibility.Contains(”ProfileHeight“)= true
答案 0 :(得分:17)
您的意思是您希望listB where
中的项目包含listA中元素的any
吗?
listB.Where(b => listA.Any(a => b.Contains(a))
答案 1 :(得分:5)
您可以在LINQ中执行此操作:
listB.Where(e => listA.Any(a => e.Contains(a)));
请记住,此算法的运行时成本与 O(n ^ 2)类似,因此随着列表中元素数量的增加,它会快速减速。
答案 2 :(得分:1)
你也可以实现这样的目标:
public class EqualityComparer : IEqualityComparer<string>
{
public bool Equals(string x, string y)
{
return y.Contains(x);
}
public int GetHashCode(string obj)
{
return 1;
}
}
然后使用相交:
listB.Intersect(listA, new EqualityComparer()).ToList();
答案 3 :(得分:0)
是的,你可以用LINQ
做这件事 public List<string> GetSimilarStrings(List<string> list1, List<string> list2)
{
return (from item in list1 from item2 in list2 where string.Equals(item,item2,StringComparison.InvariantCultureIgnoreCase) select item).ToList();
}
答案 4 :(得分:0)
BufferedImage[] input = new BufferedImage[count-1];
//Load each input image.
for(int index=0; index<input.length; index++) {
try {
File f = new File("folder_path\\"+img_"+
(index+1)+".tiff");
input[index] = ImageIO.read(f);
}
catch(Exception e) {
e.printStackTrace();
}
}
int offset = 5, width=0, height=input[0].getHeight();
for(int index=0; index<input.length; index++) {
width+=input[index].getWidth();
if(height<input[index].getHeight())
{
height=input[index].getHeight();
}
}
width+=count*offset;
height+=offset;
//Create Output image
BufferedImage output = new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = output.createGraphics();
Color oldColor = g2.getColor();
//fill background
g2.setPaint(Color.WHITE);
g2.fillRect(0, 0, width, height);
//draw image
g2.setColor(oldColor);
int xcordinate=0;
for(int index=0; index<input.length; index++) {
g2.drawImage(input[index], null, xcordinate, 0);
xcordinate+=input[index].getWidth()+offset;
}
g2.dispose();
File merged = new File("folder_path\\"+merged_2_new.tiff");
try {
ImageIO.write(output, "tiff", merged);
}
catch(Exception e) {
e.printStackTrace();
}
匹配结果将为{“ zinmin”}。排序顺序无关紧要。