我有一个MySQL数据库,我在其中存储有关每个用户的数据.
我想为每个用户添加一个朋友列表.我应该为数据库中的每个用户创建一个朋友表,还是有更好的方法?
我得到了一个简单的整数列表.
List<int> myInts = new List<int>();
myInts.Add(0);
myInts.Add(1);
myInts.Add(4);
myInts.Add(6);
myInts.Add(24);
Run Code Online (Sandbox Code Playgroud)
我的目标是从List中获取第一个未使用的(可用)值.
(集合中尚未出现的第一个正值)
在这种情况下,答案是2.
这是我目前的代码:
int GetFirstFreeInt()
{
for (int i = 0; i < int.MaxValue; ++i)
{
if(!myInts.Contains(i))
return i;
}
throw new InvalidOperationException("All integers are already used.");
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?也许使用LINQ?你会怎么做?
当然,我在这里使用了简单但我的问题适用于任何类型.
例如,如何GroupId使用LINQ 对以下记录进行分组,并将每个组中的所有其他列相加?(从而将每个组中的所有行合并为一个)
var list = new List<Foo>()
{
new Foo() { GroupId = 0, ValueA = 10, ValueB = 100 },
new Foo() { GroupId = 1, ValueA = 30, ValueB = 700 },
new Foo() { GroupId = 1, ValueA = 40, ValueB = 500 },
new Foo() { GroupId = 2, ValueA = 80, ValueB = 300 },
new Foo() { GroupId = 2, ValueA = 20, ValueB = 200 },
new Foo() { GroupId = …Run Code Online (Sandbox Code Playgroud) 在我的ASP.NET表单中回发(单击一个按钮)后,我的表单的所有DataItem都为null.为什么?即使在回发后,我该怎么做才能检索DataList的内容?
protected void buttonAddRecord_Click(object sender, EventArgs e)
{
foreach (DataListItem item in listFields.Items)
{
// item.DataItem == null WTF?
}
}
protected void Page_Load(object sender, EventArgs e)
{
BindFields();
}
private void BindFields()
{
object setting = MySettings.GetSetting();
if (!Null.IsNull(setting))
{
listFields.DataSource =
DataProvider.GetData(int.Parse(setting.ToString()));
listFields.DataBind();
}
listFields.Visible = listFields.Items.Count > 0;
emptyMessage.Visible = listFields.Items.Count == 0;
}
Run Code Online (Sandbox Code Playgroud) 我需要使用一个Dictionary,其中TKey是一对int.
我想使用KeyValuePair作为我的键的类型,我想知道这是否是最好的方法.
我也很想知道Dictionary是否会为具有相同整数和原因的两个不同KeyValuePair对象创建单独的条目.
例如:
var myDictionary = new Dictionary<KeyValuePair<int,int>, string>();
myDictionary.Add(new KeyValuePair<int,int>(3, 3), "FirstItem");
myDictionary.Add(new KeyValuePair<int,int>(3, 3), "SecondItem");
// does the dictionary allow this?
Run Code Online (Sandbox Code Playgroud) 在Java中,要创建和显示新的JFrame,我只需这样做:
public static void main(String[] args) {
new MyCustomFrameClass().setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
但是,我见过很多人这样做:
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new MyCustomFrameClass().setVisible(true);
}
});
}
Run Code Online (Sandbox Code Playgroud)
为什么?有什么好处吗?
1)这些生成相同的字节代码吗?
2)如果没有,在某些情况下使用一个是否有任何收益?
// LINQ select statement
return from item in collection
select item.Property;
// foreach in an iterator block
foreach (item in collection)
yield return item.Property;
Run Code Online (Sandbox Code Playgroud) 我已经看到SQL注入字符串通常是这样构造的:
' ; DROP DATABASE db --
Run Code Online (Sandbox Code Playgroud)
因此,如果我不允许在我的应用程序输入中使用分号,这是否100%防止任何SQL注入攻击?
问题1:在DateTime对象的集合中,如何确定哪一个是最早/最新的?
问题2:在对象集合中,如何确定哪个对象具有最早/最新的DateTime属性?
例如:
class VideoGame
{
DateTime ReleaseDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
哪个VideoGame会在第一个/最后一个发布?
var allGames = new List<VideoGame>();
allGames.Add( new VideoGame() { ReleaseDate = new DateTime(2010, 10, 4)} );
allGames.Add( new VideoGame() { ReleaseDate = new DateTime(2012, 7, 14)} );
allGames.Add( new VideoGame() { ReleaseDate = new DateTime(2014, 5, 26)} );
Run Code Online (Sandbox Code Playgroud) 我真的很高兴能够在C#中做到这一点:
IEnumerable GetThePizzas()
{
yield return new NewYorkStylePizza();
yield return new SicilianPizza();
yield return new GreekPizza();
yield return new ChicagoStylePizza();
yield return new HawaiianPizza();
}
Run Code Online (Sandbox Code Playgroud)
而在Java中,我会这样做:
Collection<Pizza> getThePizzas()
{
ArrayList<Pizza> pizzas = new ArrayList<Pizza>();
pizzas.add(new NewYorkStylePizza());
pizzas.add(new SicilianPizza());
pizzas.add(new GreekPizza());
pizzas.add(new ChicagoStylePizza());
pizzas.add(new HawaiianPizza());
return pizzas;
}
Run Code Online (Sandbox Code Playgroud)
请注意,Java代码告诉返回的类型(Pizza实例).C#代码没有.这让我很烦恼,尤其是在其他程序员无法访问源代码的情况下.有没有办法来解决这个问题?
更新:我的问题是我使用"System.Collections"而不是"System.Collections.Generic",因此我使用的是非通用版本的IEnumerable.