View Full Version : سوال: جستجوي يک رشته که کلمات با کاما از هم جدا شدن در رشته اي ديگر با همان شرايط
bftarane
جمعه 08 دی 1391, 18:05 عصر
سلام
فرض کنيد من اين رشته رو دارم
flower,tree,leaf
و يه تکست باکس دارم که ادمين مياد يه همچين رشته اي رو توش وارد ميکنه
greentree,tree,browntree
چطور مي تونم اجازه ندم بهش که کلمه تکراري وارد کنه؟
مثلاً نمي خوام پس از درج اين ذخيره شده باشه در جدول
flower,tree,leaf,greentree,tree,browntree
فکر مي کنم بايد با linq اين کار رو انجام بدم ولي بلد نيستم. ممنون ميشم راهنمايي کنيد.
fakhravari
جمعه 08 دی 1391, 18:09 عصر
خب میتونید چنتا کار کنید.
متا کاراکتر ، را با اسپلیت بگیرید و دیگه به خودتون مربوطه کدوم index ذخیره کنید.
باید چنتا if برسی کنید که ایا این متا کاراکترتا در رشته هستند یا نه.
bftarane
جمعه 08 دی 1391, 18:57 عصر
دیگه به خودتون مربوطه کدوم index ذخیره کنید.
آقاي فخرآوري متوجه منظور شما نشدم
ولي خودم يه همچين چيزي نوشتم
string stringintable=dr["keywords"].tostring();
string newstring=textbox1.text;
list<string> mylist=new List<string>();
list<string> lastlist=new List<string>();
mylist.add(newstring);
lastlist=mylist;
foreach(listitem in mylist.items)
{
var result=from n in stringintable
where n like listitem
select n;
if (result!=null)
{
lastlist.add(result);
}
}
return lastlist;
insert lastlist in database;
ولي اصلاً با linq آشنا نيستم و نمي دونم درستش چه طوريه.
حالا من مي رم اين رو امتحان مي کنم لطفاً هر کس بلده اشکالاي کد من رو بگيره و بهم بگه.
fakhravari
جمعه 08 دی 1391, 20:35 عصر
چی کار به linq داری.
اها برای مقایسه باید با کل لیست مقایسه کنید دیگه
bftarane
جمعه 08 دی 1391, 23:57 عصر
سلام.
با کدهاي زير مشکل حل شد.
public List<string> searchkeywords()
{
string string1 = "flower,tree,leaf";
string[] arr1 = string1.Split(',');
string string2 = "greentree,tree,browntree";
string[] arr2 = string2.Split(',');
List<string> myList = new List<string>();
myList.Add(string1);
for (int i = 0; i < arr2.Length; i++)
{
string t = arr2[i].ToString();
if (!StringUtils.Exists(t, arr1))
{
myList.Add(t);
}
}
return myList;
}
public static class StringUtils
{
public static bool Exists(string aString, params string[] aStringsList)
{
foreach (string listString in aStringsList)
if (aString == listString)
return true;
return false;
}
}
protected void Button5_Click(object sender, EventArgs e)
{
List<string> mylist = searchkeywords();
string ddd=string.Join(",",mylist);
Response.Write(ddd);
}
ولي اگه راه بهتري کسي سراغ داره خوشحال ميشم بشنوم.
actros
شنبه 09 دی 1391, 03:48 صبح
سلام.
با کدهاي زير مشکل حل شد.
ولي اگه راه بهتري کسي سراغ داره خوشحال ميشم بشنوم.
زندگی با لینک خیلی شیرین تره :دی
این پروژه (http://www.mediafire.com/?8xme3r47ln90xy2) بگیر کامل توضیح دادم.تبدیل به #C (http://www.developerfusion.com/tools/convert/vb-to-csharp/)
تو این پروژه،ادمین هم میتونه به صورت دستی تو textbox مقادیرو وارد کنه هم از طریق یه فایل txt. (این فایل دانلود میشه،اطلاعاتش خونده میشه و درنهایت حذف میشه)
http://upcity.ir/images/60584997834922147185.png
کد دگمه ثبت (سر فرصت بشین خوب OOP یش کن :دی)
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Using myEntities As New DataEntities
If txtsn.Text.Trim <> Nothing Then
'خواندن سریال نامبرها
Dim snTxt As String = txtsn.Text.Trim.ToString()
'جداسازی سریال نامبرها
Dim sNumber As String() = snTxt.Split(",")
For Each sn As String In sNumber
Dim mySn = (From s In myEntities.SerialNumbers
Where s.SNumber = sn
Select s)
' اگر صفر باشد یعنی تکراری تیست
If mySn.Count() = 0 Then
'ذخیره سریال نامبر جدید
Dim mySnumber As New SerialNumber()
myEntities.AddToSerialNumbers(mySnumber)
mySnumber.SNumber = sn
myEntities.SaveChanges()
End If
Next
txtsn.Text = ""
ElseIf fluptxt.HasFile Then
'ذخیره فایل
fluptxt.SaveAs(MapPath("~/") & fluptxt.FileName)
Dim sns As String = System.IO.File.ReadAllText(MapPath("~/" & fluptxt.FileName))
Dim sNumber As String() = sns.Split(",")
For Each sn As String In sNumber
Dim mySn = (From s In myEntities.SerialNumbers
Where s.SNumber = sn
Select s)
' اگر صفر باشد یعنی تکراری تیست
If mySn.Count() = 0 Then
'ذخیره سریال نامبر جدید
Dim mySnumber As New SerialNumber()
myEntities.AddToSerialNumbers(mySnumber)
mySnumber.SNumber = sn
myEntities.SaveChanges()
End If
Next
'حذف فایل
System.IO.File.Delete(MapPath("~/" & fluptxt.FileName))
End If
' آپدیت ریپیتر
loadSerials()
End Using
واسه قشنگی کار اطلاعات وارد شده رو نمایش میدی تا ادمین لذت ببره:لبخند:
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
loadSerials()
End Sub
Private Sub loadSerials()
Using myEntities As New DataEntities
'خواندن سریال نامبرهای موجود
Dim mySnumbers = From sn In myEntities.SerialNumbers
Select sn
r1.DataSource = mySnumbers
r1.DataBind()
End Using
End Sub
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.